summaryrefslogtreecommitdiffstats
path: root/examples/charts/chartsgallery/stackeddrilldownchart.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/charts/chartsgallery/stackeddrilldownchart.cpp')
-rw-r--r--examples/charts/chartsgallery/stackeddrilldownchart.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/examples/charts/chartsgallery/stackeddrilldownchart.cpp b/examples/charts/chartsgallery/stackeddrilldownchart.cpp
new file mode 100644
index 00000000..89df4ec0
--- /dev/null
+++ b/examples/charts/chartsgallery/stackeddrilldownchart.cpp
@@ -0,0 +1,38 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#include "stackeddrilldownchart.h"
+
+#include <QBarCategoryAxis>
+#include <QValueAxis>
+
+StackedDrilldownChart::StackedDrilldownChart(QGraphicsItem *parent, Qt::WindowFlags wFlags)
+ : QChart(QChart::ChartTypeCartesian, parent, wFlags),
+ m_axisX(new QBarCategoryAxis),
+ m_axisY(new QValueAxis)
+{
+ addAxis(m_axisY, Qt::AlignLeft);
+ addAxis(m_axisX, Qt::AlignBottom);
+}
+
+void StackedDrilldownChart::changeSeries(StackedDrilldownSeries *series)
+{
+ if (m_currentSeries)
+ removeSeries(m_currentSeries);
+
+ m_currentSeries = series;
+
+ // Reset axis
+ m_axisX->setCategories(m_currentSeries->categories());
+ addSeries(series);
+ series->attachAxis(m_axisX);
+ series->attachAxis(m_axisY);
+ m_axisY->setRange(0,m_currentSeries->maxValue());
+ setTitle(series->name());
+}
+
+void StackedDrilldownChart::handleClicked(int index, QBarSet *)
+{
+ auto series = static_cast<StackedDrilldownSeries *>(sender());
+ changeSeries(series->drilldownSeries(index));
+}