summaryrefslogtreecommitdiffstats
path: root/examples/charts/piechartdrilldown
diff options
context:
space:
mode:
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