##// END OF EJS Templates
Fix setting custom color to pie. Now the pie knows if the color is set by the user.
Fix setting custom color to pie. Now the pie knows if the color is set by the user.

File last commit:

r621:f4b980d7defa
r691:02b456949de5
Show More
main.cpp
114 lines | 3.1 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);
setChartTitle(series->title());
}
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);
drilldownChart->setChartTheme(QChart::ChartThemeVanilla);
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);
Jani Honkonen
Add drilldown example for piechart
r406 yearSeries->setTitle("Sales by year - All");
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);
Jani Honkonen
Refactor piechartdrilldown example a bit
r408 series->setTitle("Sales by month - " + name);
foreach (QString month, months)
*series << new DrilldownSlice(qrand() % 1000, month, yearSeries);
QObject::connect(series, SIGNAL(clicked(QPieSlice*)), drilldownChart, SLOT(handleSliceClicked(QPieSlice*)));
*yearSeries << new DrilldownSlice(series->total(), name, series);
}
Jani Honkonen
Add drilldown example for piechart
r406
QObject::connect(yearSeries, SIGNAL(clicked(QPieSlice*)), drilldownChart, SLOT(handleSliceClicked(QPieSlice*)));
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"