summaryrefslogtreecommitdiffstats
path: root/examples/charts/polarchart/chartview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/charts/polarchart/chartview.cpp')
-rw-r--r--examples/charts/polarchart/chartview.cpp111
1 files changed, 111 insertions, 0 deletions
diff --git a/examples/charts/polarchart/chartview.cpp b/examples/charts/polarchart/chartview.cpp
new file mode 100644
index 00000000..038ce709
--- /dev/null
+++ b/examples/charts/polarchart/chartview.cpp
@@ -0,0 +1,111 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the Qt Enterprise Charts Add-on.
+**
+** $QT_BEGIN_LICENSE$
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "chartview.h"
+#include <QMouseEvent>
+#include <QDebug>
+#include <QAbstractAxis>
+#include <QValueAxis>
+
+QT_CHARTS_USE_NAMESPACE
+
+ChartView::ChartView(QWidget *parent)
+ : QChartView(parent)
+{
+}
+
+//![1]
+void ChartView::keyPressEvent(QKeyEvent *event)
+{
+ switch (event->key()) {
+ case Qt::Key_Plus:
+ chart()->zoomIn();
+ break;
+ case Qt::Key_Minus:
+ chart()->zoomOut();
+ break;
+ case Qt::Key_Left:
+ chart()->scroll(-1.0, 0);
+ break;
+ case Qt::Key_Right:
+ chart()->scroll(1.0, 0);
+ break;
+ case Qt::Key_Up:
+ chart()->scroll(0, 1.0);
+ break;
+ case Qt::Key_Down:
+ chart()->scroll(0, -1.0);
+ break;
+ case Qt::Key_Space:
+ switchChartType();
+ break;
+ default:
+ QGraphicsView::keyPressEvent(event);
+ break;
+ }
+}
+//![1]
+
+//![2]
+void ChartView::switchChartType()
+{
+ QChart *newChart;
+ QChart *oldChart = chart();
+
+ if (oldChart->chartType() == QChart::ChartTypeCartesian)
+ newChart = new QPolarChart();
+ else
+ newChart = new QChart();
+
+ // Move series and axes from old chart to new one
+ QList<QAbstractSeries *> seriesList = oldChart->series();
+ QList<QAbstractAxis *> axisList = oldChart->axes();
+ QList<QPair<qreal, qreal> > axisRanges;
+
+ foreach (QAbstractAxis *axis, axisList) {
+ QValueAxis *valueAxis = static_cast<QValueAxis *>(axis);
+ axisRanges.append(QPair<qreal, qreal>(valueAxis->min(), valueAxis->max()));
+ }
+
+ foreach (QAbstractSeries *series, seriesList)
+ oldChart->removeSeries(series);
+
+ foreach (QAbstractAxis *axis, axisList) {
+ oldChart->removeAxis(axis);
+ newChart->addAxis(axis, axis->alignment());
+ }
+
+ foreach (QAbstractSeries *series, seriesList) {
+ newChart->addSeries(series);
+ foreach (QAbstractAxis *axis, axisList)
+ series->attachAxis(axis);
+ }
+
+ int count = 0;
+ foreach (QAbstractAxis *axis, axisList) {
+ axis->setRange(axisRanges[count].first, axisRanges[count].second);
+ count++;
+ }
+
+ newChart->setTitle(oldChart->title());
+ setChart(newChart);
+ delete oldChart;
+}
+//![2]