summaryrefslogtreecommitdiffstats
path: root/examples/charts/piechartdrilldown
diff options
context:
space:
mode:
authorTitta Heikkala <titta.heikkala@digia.com>2014-07-01 07:10:00 +0300
committerTitta Heikkala <titta.heikkala@theqtcompany.com>2014-10-14 13:04:52 +0300
commitc544258484ff4fd5d2b88402fbaa5d154b89a3a2 (patch)
tree7659625abb566dec55d3783ed820b928542d9b2b /examples/charts/piechartdrilldown
parent76339f714f088645e911cee65bdb66055fe029aa (diff)
Qt Charts project file structure change
Charts repository structure is changed to follow the structure of a Qt Add-On module. The task includes following changes: - All macros and definitions named 'commercial' have been renamed. - Compile errors related to QString and qSort usage have been fixed. - Old demos are moved under examples. The QML examples now support only Qt Quick 2.0, the support for Qt Quick 1 is removed. - The QML examples with multiple views are updated so that they are usable also with touch devices. - Unnecessary version checks are removed from examples. - The build stamp has been removed as it was only meant for Charts development purposes and it's no longer needed. Also development build related debug prints are removed as __DATE__ can't be used for all OS thus it doesn't make much sense. - Documentation structure has been updated based on the new module structure. The raw HTML files have been removed. Demos are combined to examples. - Unnecessary .qdocinc files are no longer needed. The content is moved to the corresponding .cpp files. - The Charts widget designer plugin is updated according to the module change. - The test cases updated according to the project structure change. Tests are added also for version 2.0. - cmake modules generation is not needed with Qt 5.4 and Qt Charts so it's disabled. - The new module name and version are updated to the plugin.qmltypes file. Task-number: QTRD-2844, QTRD-3217, QTRD-3218, QTRD-3277, QTRD-3228, QTRD-2526, QTRD-3233, QTRD-3222 Change-Id: Ib7fb26057cde710ffaf6bc780c8bf52a16f45160 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@theqtcompany.com>
Diffstat (limited to 'examples/charts/piechartdrilldown')
-rw-r--r--examples/charts/piechartdrilldown/drilldownchart.cpp54
-rw-r--r--examples/charts/piechartdrilldown/drilldownchart.h47
-rw-r--r--examples/charts/piechartdrilldown/drilldownslice.cpp63
-rw-r--r--examples/charts/piechartdrilldown/drilldownslice.h49
-rw-r--r--examples/charts/piechartdrilldown/main.cpp77
-rw-r--r--examples/charts/piechartdrilldown/piechartdrilldown.pro11
6 files changed, 301 insertions, 0 deletions
diff --git a/examples/charts/piechartdrilldown/drilldownchart.cpp b/examples/charts/piechartdrilldown/drilldownchart.cpp
new file mode 100644
index 00000000..b326472c
--- /dev/null
+++ b/examples/charts/piechartdrilldown/drilldownchart.cpp
@@ -0,0 +1,54 @@
+/****************************************************************************
+**
+** 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 "drilldownchart.h"
+#include "drilldownslice.h"
+
+QT_CHARTS_USE_NAMESPACE
+
+DrilldownChart::DrilldownChart(QGraphicsItem *parent, Qt::WindowFlags wFlags)
+ : QChart(QChart::ChartTypeCartesian, parent, wFlags),
+ m_currentSeries(0)
+{
+
+}
+
+DrilldownChart::~DrilldownChart()
+{
+
+}
+
+void DrilldownChart::changeSeries(QAbstractSeries *series)
+{
+ // NOTE: if the series is owned by the chart it will be deleted
+ // here the "window" owns the series...
+ if (m_currentSeries)
+ removeSeries(m_currentSeries);
+ m_currentSeries = series;
+ addSeries(series);
+ setTitle(series->name());
+}
+
+void DrilldownChart::handleSliceClicked(QPieSlice *slice)
+{
+ DrilldownSlice *drilldownSlice = static_cast<DrilldownSlice *>(slice);
+ changeSeries(drilldownSlice->drilldownSeries());
+}
+
+#include "moc_drilldownchart.cpp"
diff --git a/examples/charts/piechartdrilldown/drilldownchart.h b/examples/charts/piechartdrilldown/drilldownchart.h
new file mode 100644
index 00000000..554b6651
--- /dev/null
+++ b/examples/charts/piechartdrilldown/drilldownchart.h
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+#ifndef DRILLDOWNCHART_H
+#define DRILLDOWNCHART_H
+
+#include <QChart>
+
+QT_CHARTS_BEGIN_NAMESPACE
+class QAbstractSeries;
+class QPieSlice;
+QT_CHARTS_END_NAMESPACE
+
+QT_CHARTS_USE_NAMESPACE
+
+class DrilldownChart : public QChart
+{
+ Q_OBJECT
+public:
+ explicit DrilldownChart(QGraphicsItem *parent = 0, Qt::WindowFlags wFlags = 0);
+ ~DrilldownChart();
+ void changeSeries(QAbstractSeries *series);
+
+public Q_SLOTS:
+ void handleSliceClicked(QPieSlice *slice);
+
+private:
+ QAbstractSeries *m_currentSeries;
+};
+
+#endif // DRILLDOWNCHART_H
diff --git a/examples/charts/piechartdrilldown/drilldownslice.cpp b/examples/charts/piechartdrilldown/drilldownslice.cpp
new file mode 100644
index 00000000..c04d7fe7
--- /dev/null
+++ b/examples/charts/piechartdrilldown/drilldownslice.cpp
@@ -0,0 +1,63 @@
+/****************************************************************************
+**
+** 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 "drilldownslice.h"
+
+QT_CHARTS_USE_NAMESPACE
+
+DrilldownSlice::DrilldownSlice(qreal value, QString prefix, QAbstractSeries *drilldownSeries)
+ : m_drilldownSeries(drilldownSeries),
+ m_prefix(prefix)
+{
+ setValue(value);
+ updateLabel();
+ setLabelFont(QFont("Arial", 8));
+ connect(this, SIGNAL(percentageChanged()), this, SLOT(updateLabel()));
+ connect(this, SIGNAL(hovered(bool)), this, SLOT(showHighlight(bool)));
+}
+
+DrilldownSlice::~DrilldownSlice()
+{
+
+}
+
+QAbstractSeries *DrilldownSlice::drilldownSeries() const
+{
+ return m_drilldownSeries;
+}
+
+void DrilldownSlice::updateLabel()
+{
+ QString label = m_prefix;
+ label += " $";
+ label += QString::number(this->value());
+ label += ", ";
+ label += QString::number(this->percentage() * 100, 'f', 1);
+ label += "%";
+ setLabel(label);
+}
+
+void DrilldownSlice::showHighlight(bool show)
+{
+ setLabelVisible(show);
+ setExploded(show);
+}
+
+#include "moc_drilldownslice.cpp"
diff --git a/examples/charts/piechartdrilldown/drilldownslice.h b/examples/charts/piechartdrilldown/drilldownslice.h
new file mode 100644
index 00000000..9743e852
--- /dev/null
+++ b/examples/charts/piechartdrilldown/drilldownslice.h
@@ -0,0 +1,49 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+#ifndef DRILLDOWNSLICE_H
+#define DRILLDOWNSLICE_H
+
+#include <QPieSlice>
+
+QT_CHARTS_BEGIN_NAMESPACE
+class QAbstractSeries;
+QT_CHARTS_END_NAMESPACE
+
+QT_CHARTS_USE_NAMESPACE
+
+class DrilldownSlice : public QPieSlice
+{
+ Q_OBJECT
+
+public:
+ DrilldownSlice(qreal value, QString prefix, QAbstractSeries *drilldownSeries);
+ virtual ~DrilldownSlice();
+ QAbstractSeries *drilldownSeries() const;
+
+public Q_SLOTS:
+ void updateLabel();
+ void showHighlight(bool show);
+
+private:
+ QAbstractSeries *m_drilldownSeries;
+ QString m_prefix;
+};
+
+#endif // DRILLDOWNSLICE_H
diff --git a/examples/charts/piechartdrilldown/main.cpp b/examples/charts/piechartdrilldown/main.cpp
new file mode 100644
index 00000000..a32587ff
--- /dev/null
+++ b/examples/charts/piechartdrilldown/main.cpp
@@ -0,0 +1,77 @@
+/****************************************************************************
+**
+** 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 "drilldownchart.h"
+#include "drilldownslice.h"
+#include <QApplication>
+#include <QMainWindow>
+#include <QTime>
+#include <QChartView>
+#include <QLegend>
+#include <QPieSeries>
+
+QT_CHARTS_USE_NAMESPACE
+
+int main(int argc, char *argv[])
+{
+ QApplication a(argc, argv);
+
+ qsrand(QTime(0, 0, 0).secsTo(QTime::currentTime()));
+
+ QMainWindow window;
+
+ DrilldownChart *chart = new DrilldownChart();
+ chart->setTheme(QChart::ChartThemeLight);
+ chart->setAnimationOptions(QChart::AllAnimations);
+ chart->legend()->setVisible(true);
+ chart->legend()->setAlignment(Qt::AlignRight);
+
+ QPieSeries *yearSeries = new QPieSeries(&window);
+ yearSeries->setName("Sales by year - All");
+
+ QList<QString> months;
+ months << "Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun" << "Jul" << "Aug" << "Sep" << "Oct" << "Nov" << "Dec";
+ QList<QString> names;
+ names << "Jane" << "John" << "Axel" << "Mary" << "Susan" << "Bob";
+
+ foreach (QString name, names) {
+ QPieSeries *series = new QPieSeries(&window);
+ series->setName("Sales by month - " + name);
+
+ foreach (QString month, months)
+ *series << new DrilldownSlice(qrand() % 1000, month, yearSeries);
+
+ QObject::connect(series, SIGNAL(clicked(QPieSlice*)), chart, SLOT(handleSliceClicked(QPieSlice*)));
+
+ *yearSeries << new DrilldownSlice(series->sum(), name, series);
+ }
+
+ QObject::connect(yearSeries, SIGNAL(clicked(QPieSlice*)), chart, SLOT(handleSliceClicked(QPieSlice*)));
+
+ chart->changeSeries(yearSeries);
+
+ QChartView *chartView = new QChartView(chart);
+ chartView->setRenderHint(QPainter::Antialiasing);
+ window.setCentralWidget(chartView);
+ window.resize(800, 500);
+ window.show();
+
+ return a.exec();
+}
diff --git a/examples/charts/piechartdrilldown/piechartdrilldown.pro b/examples/charts/piechartdrilldown/piechartdrilldown.pro
new file mode 100644
index 00000000..0f9626c9
--- /dev/null
+++ b/examples/charts/piechartdrilldown/piechartdrilldown.pro
@@ -0,0 +1,11 @@
+!include( ../examples.pri ) {
+ error( "Couldn't find the examples.pri file!" )
+}
+TARGET = piechartdrilldown
+SOURCES += main.cpp \
+ drilldownslice.cpp \
+ drilldownchart.cpp
+
+HEADERS += \
+ drilldownchart.h \
+ drilldownslice.h