##// END OF EJS Templates
Refactoring declarative xy series
Refactoring declarative xy series

File last commit:

r733:a8e3d9a5ee37
r793:dbc1daf2590a
Show More
main.cpp
114 lines | 3.2 KiB | text/x-c | CppLexer
Jani Honkonen
Add drilldown example for piechart
r406 #include <QtGui/QApplication>
#include <QMainWindow>
#include <qchartglobal.h>
#include <qchartview.h>
#include <qpieseries.h>
#include <qpieslice.h>
#include <QTime>
QTCOMMERCIALCHART_USE_NAMESPACE
class DrilldownSlice : public QPieSlice
{
Q_OBJECT
public:
DrilldownSlice(qreal value, QString prefix, QSeries* drilldownSeries)
:m_drilldownSeries(drilldownSeries),
m_prefix(prefix)
{
setValue(value);
setLabelVisible(true);
updateLabel();
connect(this, SIGNAL(changed()), this, SLOT(updateLabel()));
}
QSeries* drilldownSeries() const { return m_drilldownSeries; }
public Q_SLOTS:
void updateLabel()
{
QString label = m_prefix;
Jani Honkonen
Refactor piechartdrilldown example a bit
r408 label += " " + QString::number(this->value())+ "e (";
Jani Honkonen
Add drilldown example for piechart
r406 label += QString::number(this->percentage()*100, 'f', 1) + "%)";
setLabel(label);
}
private:
QSeries* m_drilldownSeries;
QString m_prefix;
};
class DrilldownChart : public QChartView
{
Q_OBJECT
public:
explicit DrilldownChart(QWidget *parent = 0):QChartView(parent), m_currentSeries(0) {}
void changeSeries(QSeries* series)
{
Jani Honkonen
Fix piechartdrilldown bug. Chart was deleting the series from us.
r617 // NOTE: if the series is owned by the chart it will be deleted
// here the "window" owns the series...
Jani Honkonen
Add drilldown example for piechart
r406 if (m_currentSeries)
removeSeries(m_currentSeries);
m_currentSeries = series;
addSeries(series);
Tero Ahola
Fixed build error caused by QSeries name change
r733 setChartTitle(series->name());
Jani Honkonen
Add drilldown example for piechart
r406 }
public Q_SLOTS:
void handleSliceClicked(QPieSlice* slice)
{
DrilldownSlice* drilldownSlice = static_cast<DrilldownSlice*>(slice);
changeSeries(drilldownSlice->drilldownSeries());
}
private:
QSeries* m_currentSeries;
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
QMainWindow window;
DrilldownChart* drilldownChart = new DrilldownChart(&window);
drilldownChart->setRenderHint(QPainter::Antialiasing);
Tero Ahola
Default theme background, removed extra themes
r692 drilldownChart->setChartTheme(QChart::ChartThemeLight);
Jani Honkonen
Refactoring pie series and animations.
r621 drilldownChart->setAnimationOptions(QChart::AllAnimations);
Jani Honkonen
Add drilldown example for piechart
r406
Jani Honkonen
Fix piechartdrilldown bug. Chart was deleting the series from us.
r617 QPieSeries* yearSeries = new QPieSeries(&window);
Tero Ahola
Fixed build error caused by QSeries name change
r733 yearSeries->setName("Sales by year - All");
Jani Honkonen
Add drilldown example for piechart
r406
QList<QString> months;
months << "Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun" << "Jul" << "Aug" << "Sep" << "Oct" << "Nov" << "Dec";
Jani Honkonen
Refactor piechartdrilldown example a bit
r408 QList<QString> names;
names << "Jane" << "John" << "Axel" << "Mary" << "Samantha" << "Bob";
foreach (QString name, names) {
Jani Honkonen
Fix piechartdrilldown bug. Chart was deleting the series from us.
r617 QPieSeries* series = new QPieSeries(&window);
Tero Ahola
Fixed build error caused by QSeries name change
r733 series->setName("Sales by month - " + name);
Jani Honkonen
Refactor piechartdrilldown example a bit
r408
foreach (QString month, months)
*series << new DrilldownSlice(qrand() % 1000, month, yearSeries);
Jani Honkonen
Add mousebuttons to pie clicked signals
r707 QObject::connect(series, SIGNAL(clicked(QPieSlice*, Qt::MouseButtons)), drilldownChart, SLOT(handleSliceClicked(QPieSlice*)));
Jani Honkonen
Refactor piechartdrilldown example a bit
r408
*yearSeries << new DrilldownSlice(series->total(), name, series);
}
Jani Honkonen
Add drilldown example for piechart
r406
Jani Honkonen
Add mousebuttons to pie clicked signals
r707 QObject::connect(yearSeries, SIGNAL(clicked(QPieSlice*, Qt::MouseButtons)), drilldownChart, SLOT(handleSliceClicked(QPieSlice*)));
Jani Honkonen
Add drilldown example for piechart
r406
drilldownChart->changeSeries(yearSeries);
window.setCentralWidget(drilldownChart);
Jani Honkonen
Fix piechartdrilldown bug. Chart was deleting the series from us.
r617 window.resize(800, 600);
Jani Honkonen
Add drilldown example for piechart
r406 window.show();
return a.exec();
}
#include "main.moc"