Anzeige von Temperaturrekorden mit negativen Balken

Hinweis: Dies ist Teil des Beispiels „Diagramme mit Widgets“ aus der Galerie. Für unser Beispiel verwenden wir Temperaturdaten.

Screenshot eines Diagramms mit negativen Balken, das Temperaturwerte von -52 bis 52 Grad Celsius über zwölf Monate von Januar bis Dezember zeigt, wobei die Tiefstwerte durch den blauen Balken und die Höchstwerte durch den grünen Balken dargestellt werden.

Zunächst erstellen wir zwei Balkensätze und fügen ihnen die Daten hinzu. Ein Satz repräsentiert die Mindesttemperaturen, der andere die Höchsttemperaturen.

auto low = new QBarSet("Min");
auto high = new QBarSet("Max");

*low << -52 << -50 << -45.3 << -37.0 << -25.6 << -8.0
     << -6.0 << -11.8 << -19.7 << -32.8 << -43.0 << -48.0;
*high << 11.9 << 12.8 << 18.5 << 26.5 << 32.0 << 34.8
      << 38.2 << 34.8 << 29.8 << 20.4 << 15.1 << 11.8;

Wir erstellen die Reihe und fügen ihr die Balkensätze hinzu. Die Reihe übernimmt die Verwaltung der Balkensätze.

auto series = new QStackedBarSeries;
series->append(low);
series->append(high);

Hier erstellen wir das Diagrammobjekt und fügen die Reihe hinzu. Wir legen den Titel für das Diagramm mit `setTitle` fest und aktivieren anschließend die Animationen der Reihe durch Aufruf von `setAnimationOptions(QChart::SeriesAnimations)`

auto chart = new QChart;
chart->addSeries(series);
chart->setTitle("Temperature records in Celcius");
chart->setAnimationOptions(QChart::SeriesAnimations);

Um die Kategorien auf einer Achse anzuzeigen, müssen wir eine `QBarCategoryAxis` erstellen. Hier erstellen wir eine Kategorieachse mit einer Liste von Kategorien und fügen sie dem Diagramm untenbündig hinzu, sodass sie als x-Achse fungiert. Das Diagramm übernimmt die Verwaltung der Achse. Für die y-Achse verwenden wir eine Wertachse, die linksbündig ausgerichtet ist. Wir ändern den Bereich für die y-Achse, da dies zu schöneren Ergebnissen führt als die automatische Skalierung.

QStringList categories = {
    "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
};

auto axisX = new QBarCategoryAxis;
axisX->append(categories);
axisX->setTitleText("Month");
chart->addAxis(axisX, Qt::AlignBottom);
auto axisY = new QValueAxis;
axisY->setRange(-52, 52);
axisY->setTitleText("Temperature [&deg;C]");
chart->addAxis(axisY, Qt::AlignLeft);
series->attachAxis(axisX);
series->attachAxis(axisY);

Außerdem möchten wir die Legende anzeigen. Dazu holen wir den Legendenzeiger aus dem Diagramm und setzen ihn auf „visible“. Außerdem platzieren wir die Legende am unteren Rand des Diagramms, indem wir ihre Ausrichtung auf „ Qt::AlignBottom “ setzen.

chart->legend()->setVisible(true);
chart->legend()->setAlignment(Qt::AlignBottom);

Abschließend fügen wir das Diagramm zu einer Ansicht hinzu.

createDefaultChartView(chart);

Das Diagramm ist nun bereit zur Anzeige.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.