Utilisation fondamentale
-
Création d'une série empilée :``` QStackedBarSeries *barSeries = new QStackedBarSeries();
-
Ajout de jeux de données : Utilisez des objets
QBarSetpour définir chaque série et ajoutez-les à la série principale. ``` QBarSet *dataSet1 = new QBarSet("Données A"); QBarSet *dataSet2 = new QBarSet("Données B");*dataSet1 << 8 << 6 << 7 << 5 << 9; *dataSet2 << 2 << 4 << 3 << 6 << 1;
barSeries->append(dataSet1); barSeries->append(dataSet2);
-
Personnalisation visuelle :
- Changer la couleur d’un ensemble de barres via
setColor(). - Définir une étiquette lisible avec
setLabel().
dataSet1->setColor(Qt::green); dataSet2->setColor(Qt::orange); - Changer la couleur d’un ensemble de barres via
-
Intégration dans un graphique :``` QChart *chart = new QChart(); chart->addSeries(barSeries); chart->setTitle("Exemple de graphique à barres empilées"); chart->setAnimationOptions(QChart::SeriesAnimations);
-
Configuration des axes :
- Utilisez
QBarCategoryAxispour les catégories (ex. : mois, zones). - Utilisez
QValueAxispour l’axe des valeurs numériques.
QBarCategoryAxis *axisX = new QBarCategoryAxis(); axisX->append("Janvier"); axisX->append("Février"); axisX->append("Mars"); axisX->append("Avril"); axisX->append("Mai"); QValueAxis *axisY = new QValueAxis(); axisY->setRange(0, 15); chart->setAxisX(axisX, barSeries); chart->setAxisY(axisY, barSeries); - Utilisez
-
Affichage du graphique :``` QChartView *view = new QChartView(chart); view->setRenderHint(QPainter::Antialiasing); view->setMinimumSize(800, 600); view->show();
Exemple complet
#include <QApplication>
#include <QtCharts>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QStackedBarSeries *series = new QStackedBarSeries();
QBarSet *setA = new QBarSet("Ventilation");
QBarSet *setB = new QBarSet("Réception");
*setA << 12 << 15 << 10 << 18 << 14;
*setB << 8 << 6 << 11 << 5 << 9;
setA->setColor(Qt::blue);
setB->setColor(Qt::darkCyan);
series->append(setA);
series->append(setB);
QChart *chart = new QChart();
chart->addSeries(series);
chart->setTitle("Trafic mensuel - Empilé");
chart->setAnimationOptions(QChart::SeriesAnimations);
QBarCategoryAxis *axisX = new QBarCategoryAxis();
axisX->append("Jan");
axisX->append("Fév");
axisX->append("Mar");
axisX->append("Avr");
axisX->append("Mai");
QValueAxis *axisY = new QValueAxis();
axisY->setRange(0, 25);
chart->setAxisX(axisX, series);
chart->setAxisY(axisY, series);
QChartView *view = new QChartView(chart);
view->setRenderHint(QPainter::Antialiasing);
view->setMinimumSize(800, 600);
view->show();
return app.exec();
}
Fonctionnalités avancées
-
Mise à jour dynamique : Utilisez un
QTimerpour modifier les valeurs en temps réel. ``` QTimer *timer = new QTimer(); connect(timer, &QTimer::timeout, setA, setB { setA->replace(2, qrand() % 20); setB->replace(1, qrand() % 20); }); timer->start(1500); -
Interaction utilistaeur : Réagissez aux clics sur une barre ou un segment. ``` connect(series, &QStackedBarSeries::clicked, [](int index, QBarSet *set) { qDebug() << "Sélectionné :" << set->label() << "à l'indice" << index; });
-
Style personnalisé : Modifiez l’apparence des labels ou des lignes de grille. ``` axisX->setLabelsAngle(30); axisX->setGridLineVisible(false);
-
Comparaison multiple : Ajoutez plusieurs séries empilées pour compaerr différentes distributions. ``` QStackedBarSeries *series1 = new QStackedBarSeries(); QStackedBarSeries *series2 = new QStackedBarSeries();
chart->addSeries(series1); chart->addSeries(series2);
Conseils pratiques
- Évitez les grandes quantités de données (>10 000 points) ; privilégiez
QBarSeriespour de meilleures performances. - Vérifiez que le module
Qt Chartsest bien installé sur la plateforme cible. - Choisissez des couleurs contrastées pour garantir une lecture claire des segmetns empilés.
En combinant ces éléments, vous pouvez créer des visualisations puissantes et interactives avec QStackedBarSeries. Pour plus de détails, consultez la documentation officielle : QStackedBarSeries Class.