summaryrefslogtreecommitdiffstats
path: root/examples/charts/chartsgallery/polarchartwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/charts/chartsgallery/polarchartwidget.cpp')
-rw-r--r--examples/charts/chartsgallery/polarchartwidget.cpp110
1 files changed, 110 insertions, 0 deletions
diff --git a/examples/charts/chartsgallery/polarchartwidget.cpp b/examples/charts/chartsgallery/polarchartwidget.cpp
new file mode 100644
index 00000000..d0550c7c
--- /dev/null
+++ b/examples/charts/chartsgallery/polarchartwidget.cpp
@@ -0,0 +1,110 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#include "polarchartview.h"
+#include "polarchartwidget.h"
+
+#include <QAreaSeries>
+#include <QChart>
+#include <QLineSeries>
+#include <QPolarChart>
+#include <QScatterSeries>
+#include <QSplineSeries>
+#include <QValueAxis>
+
+PolarChartWidget::PolarChartWidget(QWidget *parent)
+ : ContentWidget(parent)
+{
+ const qreal angularMin = -100;
+ const qreal angularMax = 100;
+
+ const qreal radialMin = -100;
+ const qreal radialMax = 100;
+
+ auto series1 = new QScatterSeries;
+ series1->setName("scatter");
+ for (int i = angularMin; i <= angularMax; i += 10)
+ series1->append(i, (i / radialMax) * radialMax + 8.0);
+
+ auto series2 = new QSplineSeries;
+ series2->setName("spline");
+ for (int i = angularMin; i <= angularMax; i += 10)
+ series2->append(i, (i / radialMax) * radialMax);
+
+ auto series3 = new QLineSeries;
+ series3->setName("star outer");
+ qreal ad = (angularMax - angularMin) / 8;
+ qreal rd = (radialMax - radialMin) / 3 * 1.3;
+ series3->append(angularMin, radialMax);
+ series3->append(angularMin + ad * 1, radialMin + rd);
+ series3->append(angularMin + ad * 2, radialMax);
+ series3->append(angularMin + ad * 3, radialMin + rd);
+ series3->append(angularMin + ad * 4, radialMax);
+ series3->append(angularMin + ad * 5, radialMin + rd);
+ series3->append(angularMin + ad * 6, radialMax);
+ series3->append(angularMin + ad * 7, radialMin + rd);
+ series3->append(angularMin + ad * 8, radialMax);
+
+ auto series4 = new QLineSeries;
+ series4->setName("star inner");
+ ad = (angularMax - angularMin) / 8;
+ rd = (radialMax - radialMin) / 3;
+ series4->append(angularMin, radialMax);
+ series4->append(angularMin + ad * 1, radialMin + rd);
+ series4->append(angularMin + ad * 2, radialMax);
+ series4->append(angularMin + ad * 3, radialMin + rd);
+ series4->append(angularMin + ad * 4, radialMax);
+ series4->append(angularMin + ad * 5, radialMin + rd);
+ series4->append(angularMin + ad * 6, radialMax);
+ series4->append(angularMin + ad * 7, radialMin + rd);
+ series4->append(angularMin + ad * 8, radialMax);
+
+ auto series5 = new QAreaSeries;
+ series5->setName("star area");
+ series5->setUpperSeries(series3);
+ series5->setLowerSeries(series4);
+ series5->setOpacity(0.5);
+
+ //![1]
+ auto chart = new QPolarChart;
+ //![1]
+ chart->addSeries(series1);
+ chart->addSeries(series2);
+ chart->addSeries(series3);
+ chart->addSeries(series4);
+ chart->addSeries(series5);
+
+ chart->setTitle("Use arrow keys to scroll, +/- to zoom, and space to switch chart type.");
+
+ //![2]
+ auto angularAxis = new QValueAxis;
+ angularAxis->setTickCount(9); // First and last ticks are co-located on 0/360 angle.
+ angularAxis->setLabelFormat("%.1f");
+ angularAxis->setShadesVisible(true);
+ angularAxis->setShadesBrush(QBrush(QColor(249, 249, 255)));
+ chart->addAxis(angularAxis, QPolarChart::PolarOrientationAngular);
+
+ auto radialAxis = new QValueAxis;
+ radialAxis->setTickCount(9);
+ radialAxis->setLabelFormat("%d");
+ chart->addAxis(radialAxis, QPolarChart::PolarOrientationRadial);
+ //![2]
+
+ series1->attachAxis(radialAxis);
+ series1->attachAxis(angularAxis);
+ series2->attachAxis(radialAxis);
+ series2->attachAxis(angularAxis);
+ series3->attachAxis(radialAxis);
+ series3->attachAxis(angularAxis);
+ series4->attachAxis(radialAxis);
+ series4->attachAxis(angularAxis);
+ series5->attachAxis(radialAxis);
+ series5->attachAxis(angularAxis);
+
+ radialAxis->setRange(radialMin, radialMax);
+ angularAxis->setRange(angularMin, angularMax);
+
+ auto chartView = new PolarChartView(this);
+ chartView->setChart(chart);
+ setDefaultChartView(chartView);
+}