summaryrefslogtreecommitdiffstats
path: root/examples/charts/chartsgallery/mainwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/charts/chartsgallery/mainwidget.cpp')
-rw-r--r--examples/charts/chartsgallery/mainwidget.cpp262
1 files changed, 262 insertions, 0 deletions
diff --git a/examples/charts/chartsgallery/mainwidget.cpp b/examples/charts/chartsgallery/mainwidget.cpp
new file mode 100644
index 00000000..cb535217
--- /dev/null
+++ b/examples/charts/chartsgallery/mainwidget.cpp
@@ -0,0 +1,262 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+
+#include "areawidget.h"
+#include "boxplotwidget.h"
+#include "barmodelmapperwidget.h"
+#include "barwidget.h"
+#include "barpercentwidget.h"
+#include "barstackedwidget.h"
+#include "calloutwidget.h"
+#include "candlestickwidget.h"
+#include "contentwidget.h"
+#include "customchartwidget.h"
+#include "datetimeaxiswidget.h"
+#include "donutbreakdownwidget.h"
+#include "donutwidget.h"
+#include "dynamicsplinewidget.h"
+#include "horizontalbarwidget.h"
+#include "horizontalpercentbarwidget.h"
+#include "horizontalstackedbarwidget.h"
+#include "interactionswidget.h"
+#include "legendwidget.h"
+#include "legendmarkerswidget.h"
+#include "lightmarkerswidget.h"
+#include "lineandbarwidget.h"
+#include "linewidget.h"
+#include "logaxiswidget.h"
+#include "mainwidget.h"
+#include "modeldatawidget.h"
+#include "multiaxiswidget.h"
+#include "nesteddonutswidget.h"
+#include "pccwidget.h"
+#include "piewidget.h"
+#include "piedrilldownwidget.h"
+#include "pointconfigurationwidget.h"
+#include "polarchartwidget.h"
+#include "scatterwidget.h"
+#include "scatterinteractionswidget.h"
+#include "selectedbarwidget.h"
+#include "splinewidget.h"
+#include "stackeddrilldownwidget.h"
+#include "temperaturerecordswidget.h"
+#include "themewidget.h"
+
+#include <QApplication>
+#include <QHBoxLayout>
+#include <QListView>
+#include <QModelIndex>
+#include <QStringListModel>
+
+#include <algorithm>
+
+MainWidget::MainWidget(QWidget *parent)
+ : QWidget(parent)
+ , m_listView(new QListView(this))
+ , m_listModel(new QStringListModel(this))
+ , m_contentArea(new QWidget(this))
+{
+ m_exampleMap.insert(tr("Area Chart"), AreaChart);
+ m_exampleMap.insert(tr("Bar Model Mapper"), BarModelMapper);
+ m_exampleMap.insert(tr("Bar Chart"), BarChart);
+ m_exampleMap.insert(tr("Bar Chart Percent"), BarChartPercent);
+ m_exampleMap.insert(tr("Bar Chart Stacked"), BarChartStacked);
+ m_exampleMap.insert(tr("Bar Chart Horizontal"), BarChartHorizontal);
+ m_exampleMap.insert(tr("Bar Chart Percent Horizontal"), BarChartHorizontalPercent);
+ m_exampleMap.insert(tr("Bar Chart Stacked Horizontal"), BarChartHorizontalStacked);
+ m_exampleMap.insert(tr("Box Plot Chart"), BoxPlotChart);
+ m_exampleMap.insert(tr("Callout"), Callout);
+ m_exampleMap.insert(tr("Candlestick Chart"), CandleStickChart);
+ m_exampleMap.insert(tr("Chart Interactions"), ChartInteractions);
+ m_exampleMap.insert(tr("Chart Themes"), ChartThemes);
+ m_exampleMap.insert(tr("Custom Chart"), CustomChart);
+ m_exampleMap.insert(tr("Datetime Axis"), DateTimeAxis);
+ m_exampleMap.insert(tr("Donut"), Donut);
+ m_exampleMap.insert(tr("Donut Breakdown"), DonutBreakdown);
+ m_exampleMap.insert(tr("Drilldown Bar Chart"), StackedDrilldown);
+ m_exampleMap.insert(tr("Drilldown Pie Chart"), PieDrilldown);
+ m_exampleMap.insert(tr("Dynamic Spline Chart"), DynamicSplineChart);
+ m_exampleMap.insert(tr("Legend"), Legend);
+ m_exampleMap.insert(tr("Legend Markers"), LegendMarkers);
+ m_exampleMap.insert(tr("Light Markers and Point Selection"), LightMarkersPointSelection);
+ m_exampleMap.insert(tr("Line and Bar Chart"), LineAndBarChart);
+ m_exampleMap.insert(tr("Line Chart"), LineChart);
+ m_exampleMap.insert(tr("Log Axis"), LogAxis);
+ m_exampleMap.insert(tr("Model Data"), ModelData);
+ m_exampleMap.insert(tr("Multiple Axes"), MultiAxis);
+ m_exampleMap.insert(tr("Nested Donuts"), NestedDonuts);
+ m_exampleMap.insert(tr("Pie Chart Customization"), PieChartCustomization);
+ m_exampleMap.insert(tr("Pie Chart"), PieChart);
+ m_exampleMap.insert(tr("Point Configuration"), PointConfiguration);
+ m_exampleMap.insert(tr("Polar Chart"), PolarChart);
+ m_exampleMap.insert(tr("Scatter Interactions"), ScatterInteractions);
+ m_exampleMap.insert(tr("Scatter Chart"), ScatterChart);
+ m_exampleMap.insert(tr("Selected Bar"), SelectedBar);
+ m_exampleMap.insert(tr("Spline Chart"), SplineChart);
+ m_exampleMap.insert(tr("Temperature Records"), TemperatureRecords);
+
+ QStringList examples = m_exampleMap.keys();
+ std::sort(examples.begin(), examples.end());
+ m_listModel->setStringList(examples);
+
+ m_listView->setMaximumWidth(220);
+ m_listView->setModel(m_listModel);
+ m_listView->setCurrentIndex(m_listModel->index(0));
+ m_listView->setEditTriggers(QAbstractItemView::NoEditTriggers);
+
+ setMinimumSize(800, 400);
+ resize(1200, 600);
+
+ auto layout = new QHBoxLayout(this);
+ layout->addWidget(m_listView);
+ layout->addWidget(m_contentArea);
+ setLayout(layout);
+
+ connect(m_listView->selectionModel(), &QItemSelectionModel::currentChanged, this,
+ [this](const QModelIndex &index) {
+ setActiveExample(m_exampleMap[m_listModel->data(index).toString()]);
+ });
+
+ setActiveExample(m_exampleMap[examples[0]]);
+
+ setMouseTracking(true);
+
+ qApp->setApplicationDisplayName(tr("Qt Charts Example Gallery"));
+}
+
+void MainWidget::resizeEvent(QResizeEvent *)
+{
+ m_activeWidget->resize(m_contentArea->size());
+}
+
+void MainWidget::setActiveExample(Example example)
+{
+ // We only keep one example alive at the time to save resources.
+ // This also allows resetting the example by switching to another example and back.
+ if (m_activeWidget) {
+ m_activeWidget->setVisible(false);
+ m_activeWidget->deleteLater();
+ }
+
+ switch (example) {
+ case AreaChart:
+ m_activeWidget = new AreaWidget(m_contentArea);
+ break;
+ case BarModelMapper:
+ m_activeWidget = new BarModelMapperWidget(m_contentArea);
+ break;
+ case BarChart:
+ m_activeWidget = new BarWidget(m_contentArea);
+ break;
+ case BarChartPercent:
+ m_activeWidget = new BarPercentWidget(m_contentArea);
+ break;
+ case BarChartStacked:
+ m_activeWidget = new BarStackedWidget(m_contentArea);
+ break;
+ case BarChartHorizontal:
+ m_activeWidget = new HorizontalBarWidget(m_contentArea);
+ break;
+ case BarChartHorizontalPercent:
+ m_activeWidget = new HorizontalPercentBarWidget(m_contentArea);
+ break;
+ case BarChartHorizontalStacked:
+ m_activeWidget = new HorizontalStackedBarWidget(m_contentArea);
+ break;
+ case BoxPlotChart:
+ m_activeWidget = new BoxPlotWidget(m_contentArea);
+ break;
+ case Callout:
+ m_activeWidget = new CalloutWidget(m_contentArea);
+ break;
+ case CandleStickChart:
+ m_activeWidget = new CandleStickWidget(m_contentArea);
+ break;
+ case ChartInteractions:
+ m_activeWidget = new InteractionsWidget(m_contentArea);
+ break;
+ case ChartThemes:
+ m_activeWidget = new ThemeWidget(m_contentArea);
+ break;
+ case CustomChart:
+ m_activeWidget = new CustomChartWidget(m_contentArea);
+ break;
+ case DateTimeAxis:
+ m_activeWidget = new DateTimeAxisWidget(m_contentArea);
+ break;
+ case Donut:
+ m_activeWidget = new DonutWidget(m_contentArea);
+ break;
+ case DonutBreakdown:
+ m_activeWidget = new DonutBreakdownWidget(m_contentArea);
+ break;
+ case DynamicSplineChart:
+ m_activeWidget = new DynamicSplineWidget(m_contentArea);
+ break;
+ case Legend:
+ m_activeWidget = new LegendWidget(m_contentArea);
+ break;
+ case LegendMarkers:
+ m_activeWidget = new LegendMarkersWidget(m_contentArea);
+ break;
+ case LightMarkersPointSelection:
+ m_activeWidget = new LightMarkersWidget(m_contentArea);
+ break;
+ case LineAndBarChart:
+ m_activeWidget = new LineAndBarWidget(m_contentArea);
+ break;
+ case LineChart:
+ m_activeWidget = new LineWidget(m_contentArea);
+ break;
+ case LogAxis:
+ m_activeWidget = new LogAxisWidget(m_contentArea);
+ break;
+ case ModelData:
+ m_activeWidget = new ModelDataWidget(m_contentArea);
+ break;
+ case MultiAxis:
+ m_activeWidget = new MultiAxisWidget(m_contentArea);
+ break;
+ case NestedDonuts:
+ m_activeWidget = new NestedDonutsWidget(m_contentArea);
+ break;
+ case PieChartCustomization:
+ m_activeWidget = new PccWidget(m_contentArea);
+ break;
+ case PieDrilldown:
+ m_activeWidget = new PieDrilldownWidget(m_contentArea);
+ break;
+ case PieChart:
+ m_activeWidget = new PieWidget(m_contentArea);
+ break;
+ case PointConfiguration:
+ m_activeWidget = new PointConfigurationWidget(m_contentArea);
+ break;
+ case PolarChart:
+ m_activeWidget = new PolarChartWidget(m_contentArea);
+ break;
+ case ScatterInteractions:
+ m_activeWidget = new ScatterInteractionsWidget(m_contentArea);
+ break;
+ case ScatterChart:
+ m_activeWidget = new ScatterWidget(m_contentArea);
+ break;
+ case SelectedBar:
+ m_activeWidget = new SelectedBarWidget(m_contentArea);
+ break;
+ case SplineChart:
+ m_activeWidget = new SplineWidget(m_contentArea);
+ break;
+ case TemperatureRecords:
+ m_activeWidget = new TemperatureRecordsWidget(m_contentArea);
+ break;
+ case StackedDrilldown:
+ m_activeWidget = new StackedDrilldownWidget(m_contentArea);
+ break;
+ }
+
+ m_activeWidget->load();
+ m_activeWidget->resize(m_contentArea->size());
+ m_activeWidget->setVisible(true);
+}