##// END OF EJS Templates
Documentation for stacked barchart drilldown example
Documentation for stacked barchart drilldown example

File last commit:

r462:9d290192c2c6
r462:9d290192c2c6
Show More
main.cpp
152 lines | 4.7 KiB | text/x-c | CppLexer
sauimone
Drilldown example for barcharts continuing. Still some bugs
r430 #include <QtGui/QApplication>
sauimone
Better way to enable features to user. Do less, but expose signals to user and allow user to descide what to do.
r425 #include <QMainWindow>
sauimone
Drilldown example for barcharts continuing. Still some bugs
r430 #include <qchartglobal.h>
sauimone
Better way to enable features to user. Do less, but expose signals to user and allow user to descide what to do.
r425 #include <qchartview.h>
#include <qstackedbarseries.h>
#include <qbarset.h>
#include <qchartaxis.h>
#include <QStringList>
sauimone
Drilldown example for barcharts continuing. Still some bugs
r430 #include <QDebug>
sauimone
Better way to enable features to user. Do less, but expose signals to user and allow user to descide what to do.
r425
QTCOMMERCIALCHART_USE_NAMESPACE
sauimone
Drilldown example for barcharts continuing. Still some bugs
r430 //! [1]
class DrilldownBarSeries : public QStackedBarSeries
{
Q_OBJECT
public:
sauimone
Drilldown example using stacked barchart.
r449 DrilldownBarSeries(QStringList categories, QObject *parent = 0) : QStackedBarSeries(categories,parent) {}
sauimone
updating drilldown example. Needs some more thinking
r438
sauimone
Documentation for stacked barchart drilldown example
r462 void mapDrilldownSeries(QString category, DrilldownBarSeries* drilldownSeries)
sauimone
Drilldown example for barcharts continuing. Still some bugs
r430 {
sauimone
Drilldown example using stacked barchart.
r449 mDrilldownSeries[category] = drilldownSeries;
sauimone
Drilldown example for barcharts continuing. Still some bugs
r430 }
sauimone
updating drilldown example. Needs some more thinking
r438
DrilldownBarSeries* drilldownSeries(QString category)
sauimone
Drilldown example using stacked barchart.
r449 {
return mDrilldownSeries[category];
}
public Q_SLOTS:
sauimone
Drilldown example for barcharts continuing. Still some bugs
r430
private:
sauimone
Drilldown example using stacked barchart.
r449
QMap<QString, DrilldownBarSeries*> mDrilldownSeries;
sauimone
Drilldown example for barcharts continuing. Still some bugs
r430 };
sauimone
Drilldown example using stacked barchart.
r449 //! [1]
sauimone
Drilldown example for barcharts continuing. Still some bugs
r430
sauimone
Drilldown example using stacked barchart.
r449 //! [2]
sauimone
Drilldown example for barcharts continuing. Still some bugs
r430 class DrilldownChart : public QChartView
{
Q_OBJECT
public:
explicit DrilldownChart(QWidget *parent = 0) : QChartView(parent), m_currentSeries(0) {}
void changeSeries(QSeries* series)
{
if (m_currentSeries)
removeSeries(m_currentSeries);
m_currentSeries = series;
addSeries(series);
setChartTitle(series->title());
}
public Q_SLOTS:
sauimone
Documentation for stacked barchart drilldown example
r462 void handleRightClick(QBarSet *barset, QString category)
sauimone
Drilldown example for barcharts continuing. Still some bugs
r430 {
sauimone
Documentation for stacked barchart drilldown example
r462 // qDebug() << "DrilldownChart::handleRightClick" << barset->name() << category;
sauimone
Drilldown example using stacked barchart.
r449 DrilldownBarSeries* series = static_cast<DrilldownBarSeries*> (sender());
changeSeries(series->drilldownSeries(category));
sauimone
Drilldown example for barcharts continuing. Still some bugs
r430 }
private:
QSeries* m_currentSeries;
};
sauimone
Drilldown example using stacked barchart.
r449 //! [2]
sauimone
Drilldown example for barcharts continuing. Still some bugs
r430
sauimone
Better way to enable features to user. Do less, but expose signals to user and allow user to descide what to do.
r425 int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMainWindow window;
sauimone
Drilldown example for barcharts continuing. Still some bugs
r430 DrilldownChart* drilldownChart = new DrilldownChart(&window);
drilldownChart->setChartTheme(QChart::ChartThemeIcy);
sauimone
Drilldown example using stacked barchart.
r449 //! [3]
sauimone
Better way to enable features to user. Do less, but expose signals to user and allow user to descide what to do.
r425 // Define categories
sauimone
Drilldown example for barcharts continuing. Still some bugs
r430 QStringList months;
sauimone
Documentation for stacked barchart drilldown example
r462 months << "May" << "Jun" << "Jul" << "Aug" << "Sep";
sauimone
Drilldown example for barcharts continuing. Still some bugs
r430 QStringList weeks;
weeks << "week 1" << "week 2" << "week 3" << "week 4";
QStringList plants;
plants << "Habanero" << "Lemon Drop" << "Starfish" << "Aji Amarillo";
sauimone
Drilldown example using stacked barchart.
r449 //! [3]
sauimone
updating drilldown example. Needs some more thinking
r438 //! [4]
sauimone
Drilldown example using stacked barchart.
r449 // Create drilldown structure
DrilldownBarSeries* seasonSeries = new DrilldownBarSeries(months, drilldownChart);
seasonSeries->setTitle("Crop by month - Season");
sauimone
Better way to enable features to user. Do less, but expose signals to user and allow user to descide what to do.
r425
sauimone
Drilldown example using stacked barchart.
r449 // Each month in season series has drilldown series for weekly data
foreach (QString month, months) {
sauimone
Drilldown example for barcharts continuing. Still some bugs
r430
sauimone
Drilldown example using stacked barchart.
r449 // Create drilldown series for every week
sauimone
updating drilldown example. Needs some more thinking
r438 DrilldownBarSeries* weeklySeries = new DrilldownBarSeries(weeks, drilldownChart);
sauimone
Documentation for stacked barchart drilldown example
r462 seasonSeries->mapDrilldownSeries(month, weeklySeries);
sauimone
updating drilldown example. Needs some more thinking
r438
sauimone
Drilldown example using stacked barchart.
r449 // Drilling down from weekly data brings us back to season data.
foreach (QString week, weeks) {
sauimone
Documentation for stacked barchart drilldown example
r462 weeklySeries->mapDrilldownSeries(week, seasonSeries);
sauimone
Drilldown example using stacked barchart.
r449 weeklySeries->setTitle(QString("Crop by week - " + month));
sauimone
Drilldown example for barcharts continuing. Still some bugs
r430 }
sauimone
Drilldown example using stacked barchart.
r449 // Use right click signal to implement drilldown
QObject::connect(weeklySeries,SIGNAL(rightClicked(QBarSet*,QString)),drilldownChart,SLOT(handleRightClick(QBarSet*,QString)));
sauimone
Drilldown example for barcharts continuing. Still some bugs
r430 }
sauimone
Documentation for stacked barchart drilldown example
r462
// Enable drilldown from season series using right click.
QObject::connect(seasonSeries,SIGNAL(rightClicked(QBarSet*,QString)),drilldownChart,SLOT(handleRightClick(QBarSet*,QString)));
sauimone
Drilldown example using stacked barchart.
r449 //! [4]
sauimone
Drilldown example for barcharts continuing. Still some bugs
r430
sauimone
Drilldown example using stacked barchart.
r449 //! [5]
// Fill monthly and weekly series with data
sauimone
updating drilldown example. Needs some more thinking
r438 foreach (QString plant, plants) {
sauimone
Drilldown example using stacked barchart.
r449 QBarSet* monthlyCrop = new QBarSet(plant);
foreach (QString month, months) {
QBarSet* weeklyCrop = new QBarSet(plant);
sauimone
updating drilldown example. Needs some more thinking
r438 foreach (QString week, weeks ) {
*weeklyCrop << (qrand() % 20);
}
sauimone
Documentation for stacked barchart drilldown example
r462 // Get the drilldown series from season series and add crop to it.
sauimone
Drilldown example using stacked barchart.
r449 seasonSeries->drilldownSeries(month)->addBarSet(weeklyCrop);
seasonSeries->drilldownSeries(month)->setToolTipEnabled(true);
sauimone
updating drilldown example. Needs some more thinking
r438 *monthlyCrop << weeklyCrop->total();
sauimone
Drilldown example using stacked barchart.
r449
sauimone
updating drilldown example. Needs some more thinking
r438 QObject::connect(weeklyCrop,SIGNAL(clicked(QString)),weeklyCrop,SIGNAL(toggleFloatingValues()));
}
sauimone
Drilldown example using stacked barchart.
r449 seasonSeries->addBarSet(monthlyCrop);
sauimone
updating drilldown example. Needs some more thinking
r438 QObject::connect(monthlyCrop,SIGNAL(clicked(QString)),monthlyCrop,SIGNAL(toggleFloatingValues()));
}
sauimone
Drilldown example using stacked barchart.
r449 //! [5]
seasonSeries->setToolTipEnabled(true);
sauimone
Documentation for stacked barchart drilldown example
r462 //! [6]
sauimone
Drilldown example using stacked barchart.
r449 // Show season series in initial view
drilldownChart->changeSeries(seasonSeries);
drilldownChart->setChartTitle(seasonSeries->title());
sauimone
Documentation for stacked barchart drilldown example
r462 //! [6]
sauimone
Drilldown example for barcharts continuing. Still some bugs
r430
sauimone
Drilldown example using stacked barchart.
r449 // Disable axis, since they don't really apply to bar chart
sauimone
Drilldown example for barcharts continuing. Still some bugs
r430 drilldownChart->axisX()->setAxisVisible(false);
drilldownChart->axisX()->setGridVisible(false);
drilldownChart->axisX()->setLabelsVisible(false);
window.setCentralWidget(drilldownChart);
sauimone
Better way to enable features to user. Do less, but expose signals to user and allow user to descide what to do.
r425 window.resize(400, 300);
window.show();
sauimone
Drilldown example for barcharts continuing. Still some bugs
r430
sauimone
Better way to enable features to user. Do less, but expose signals to user and allow user to descide what to do.
r425 return a.exec();
}
sauimone
Drilldown example for barcharts continuing. Still some bugs
r430 #include "main.moc"