Diagramme mit Designs erstellen
Hinweis: Dies ist Teil des Beispiels „Diagramme mit Widgets-Galerie “.
Hier können Sie das Erscheinungsbild der verschiedenen integrierten Designs für einige der unterstützten Diagrammtypen ändern.



Erstellen von Diagrammen
Die Diagramme der verschiedenen Typen werden separat generiert und dem Layout hinzugefügt. Das Liniendiagramm wird beispielsweise wie folgt erstellt. Die Erstellung anderer Diagrammtypen erfolgt auf ähnliche Weise.
Zunächst wird ein Diagramm erstellt.
auto chart = new QChart;
chart->setTitle("Line Chart");Es wird ein gemeinsamer Satz von Zufallsdaten generiert und in eine Liste aufgenommen. Diese Liste wird bei jedem Diagrammtyp verwendet, um Daten zur Reihe des Diagramms hinzuzufügen. Für die Linienreihe werden QLineSeries-Instanzen erstellt und dem Diagramm hinzugefügt.
QString name("Series ");
int nameIndex = 0;
for (const DataList &list : m_dataTable) {
auto series = new QLineSeries(chart);
for (const Data &data : list)
series->append(data.first);
series->setName(name + QString::number(nameIndex));
nameIndex++;
chart->addSeries(series);
}Für die Linienreihe werden Standardachsen erstellt. Außerdem legen wir Bereiche für die Achsen fest, die auf dem Bereich der für die Reihe verwendeten Daten basieren.
chart->createDefaultAxes();
chart->axes(Qt::Horizontal).first()->setRange(0, m_valueMax);
chart->axes(Qt::Vertical).first()->setRange(0, m_valueCount);Außerdem möchten wir mehr Abstand zwischen den Beschriftungen und der y-Achse schaffen. Dazu legen wir ein Beschriftungsformat fest, das Leerzeichen in die Beschriftungen einfügt.
// Add space to label to add space between labels and axis
auto axisY = qobject_cast<QValueAxis *>(chart->axes(Qt::Vertical).first());
Q_ASSERT(axisY);
axisY->setLabelFormat("%.1f ");Abschließend wird das Liniendiagramm dem Rasterlayout hinzugefügt.
chartView = new QChartView(createLineChart(), this);
m_ui->gridLayout->addWidget(chartView, 1, 2);Thema ändern
Der Benutzer kann ein integriertes Design auswählen, das im Beispiel verwendet werden soll. Dieses Design wird dann auf alle Diagramme im Layout angewendet.
auto theme = static_cast<QChart::ChartTheme>(
m_ui->themeComboBox->itemData(m_ui->themeComboBox->currentIndex()).toInt());
...
chartView->chart()->setTheme(theme);Ändern von Animation, Legende und Kantenglättung
In diesem Beispiel lässt sich zudem beobachten, wie sich das Ändern von Animation, Legende und Anti-Aliasing auf das Erscheinungsbild des Diagramms auswirkt.
Je nach Auswahl des Benutzers wird der verwendete Animationstyp für jedes Diagramm festgelegt. Es ist möglich, keine Animationen im Diagramm zu verwenden oder Animationen für die Rasterachse oder die Reihen oder beides zu aktivieren.
QChart::AnimationOptions options(
m_ui->animatedComboBox->itemData(m_ui->animatedComboBox->currentIndex()).toInt());
if (!m_charts.isEmpty() && m_charts.at(0)->chart()->animationOptions() != options) {
for (QChartView *chartView : charts)
chartView->chart()->setAnimationOptions(options);
}Das Diagramm kann mit einer Legende angezeigt werden. Die Legende kann an verschiedenen Seiten des Diagramms ausgerichtet werden.
Qt::Alignment alignment(
m_ui->legendComboBox->itemData(m_ui->legendComboBox->currentIndex()).toInt());
if (!alignment) {
for (QChartView *chartView : charts)
chartView->chart()->legend()->hide();
} else {
for (QChartView *chartView : charts) {
chartView->chart()->legend()->setAlignment(alignment);
chartView->chart()->legend()->show();
}
}Der Benutzer kann außerdem sehen, wie sich die Änderung der Anti-Aliasing-Option auf das Erscheinungsbild des Diagramms auswirkt. Das Anti-Aliasing wird entsprechend der Auswahl des Benutzers aktualisiert.
bool checked = m_ui->antialiasCheckBox->isChecked();
for (QChartView *chart : charts)
chart->setRenderHint(QPainter::Antialiasing, checked);© 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.