##// END OF EJS Templates
Chartthemes example to use increasing x values
Tero Ahola -
r515:3aac91920670
parent child
Show More
@@ -1,180 +1,180
1 #include <QtGui/QApplication>
1 #include <QtGui/QApplication>
2 #include <QMainWindow>
2 #include <QMainWindow>
3 #include <qchartglobal.h>
3 #include <qchartglobal.h>
4 #include <qchartview.h>
4 #include <qchartview.h>
5 #include <qpieseries.h>
5 #include <qpieseries.h>
6 #include <qpieslice.h>
6 #include <qpieslice.h>
7 #include <QGridLayout>
7 #include <QGridLayout>
8 #include <QFormLayout>
8 #include <QFormLayout>
9 #include <QComboBox>
9 #include <QComboBox>
10 #include <QSpinBox>
10 #include <QSpinBox>
11 #include <QCheckBox>
11 #include <QCheckBox>
12 #include <QGroupBox>
12 #include <QGroupBox>
13 #include <QLabel>
13 #include <QLabel>
14 #include <QTime>
14 #include <QTime>
15 #include <qlineseries.h>
15 #include <qlineseries.h>
16 #include <qsplineseries.h>
16 #include <qsplineseries.h>
17 #include <qscatterseries.h>
17 #include <qscatterseries.h>
18 #include <qareaseries.h>
18 #include <qareaseries.h>
19
19
20 QTCOMMERCIALCHART_USE_NAMESPACE
20 QTCOMMERCIALCHART_USE_NAMESPACE
21
21
22 typedef QPair<QPointF, QString> Data;
22 typedef QPair<QPointF, QString> Data;
23 typedef QList<Data> DataList;
23 typedef QList<Data> DataList;
24 typedef QList<DataList> DataTable;
24 typedef QList<DataList> DataTable;
25
25
26
26
27 class MainWidget : public QWidget
27 class MainWidget : public QWidget
28 {
28 {
29 Q_OBJECT
29 Q_OBJECT
30
30
31 public:
31 public:
32 explicit MainWidget(QWidget* parent = 0)
32 explicit MainWidget(QWidget* parent = 0)
33 :QWidget(parent)
33 :QWidget(parent)
34 {
34 {
35 // set seed for random stuff
35 // set seed for random stuff
36 qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
36 qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
37
37
38 // generate random data
38 // generate random data
39 int listCount = 3;
39 int listCount = 3;
40 int valueMax = 100;
40 int valueMax = 100;
41 int valueCount = 50;
41 int valueCount = 50;
42 for (int i=0; i<listCount; i++) {
42 for (int i(0); i < listCount; i++) {
43 DataList dataList;
43 DataList dataList;
44 for (int j=0; j<valueCount; j++) {
44 for (int j(0); j < valueCount; j++) {
45 QPointF value(qrand() % valueMax, qrand() % valueMax);
45 QPointF value(j + (qreal) rand() / (qreal) RAND_MAX, qrand() % valueMax);
46 QString label = QString::number(i) + ":" + QString::number(j);
46 QString label = QString::number(i) + ":" + QString::number(j);
47 dataList << Data(value, label);
47 dataList << Data(value, label);
48 }
48 }
49 m_dataTable << dataList;
49 m_dataTable << dataList;
50 }
50 }
51
51
52 // create layout
52 // create layout
53 QGridLayout* baseLayout = new QGridLayout();
53 QGridLayout* baseLayout = new QGridLayout();
54
54
55 // theme combo
55 // theme combo
56 m_themeComboBox = new QComboBox();
56 m_themeComboBox = new QComboBox();
57 m_themeComboBox->addItem("Default", QChart::ChartThemeDefault);
57 m_themeComboBox->addItem("Default", QChart::ChartThemeDefault);
58 m_themeComboBox->addItem("Vanilla", QChart::ChartThemeVanilla);
58 m_themeComboBox->addItem("Vanilla", QChart::ChartThemeVanilla);
59 m_themeComboBox->addItem("Icy", QChart::ChartThemeIcy);
59 m_themeComboBox->addItem("Icy", QChart::ChartThemeIcy);
60 m_themeComboBox->addItem("Grayscale", QChart::ChartThemeGrayscale);
60 m_themeComboBox->addItem("Grayscale", QChart::ChartThemeGrayscale);
61 m_themeComboBox->addItem("Scientific", QChart::ChartThemeScientific);
61 m_themeComboBox->addItem("Scientific", QChart::ChartThemeScientific);
62 connect(m_themeComboBox, SIGNAL(currentIndexChanged(int)), this ,SLOT(updateTheme()));
62 connect(m_themeComboBox, SIGNAL(currentIndexChanged(int)), this ,SLOT(updateTheme()));
63 baseLayout->addWidget(new QLabel("Theme:"), 0, 0);
63 baseLayout->addWidget(new QLabel("Theme:"), 0, 0);
64 baseLayout->addWidget(m_themeComboBox, 0, 1);
64 baseLayout->addWidget(m_themeComboBox, 0, 1);
65
65
66 // area chart
66 // area chart
67 QChartView *chart = new QChartView();
67 QChartView *chart = new QChartView();
68 chart->setChartTitle("Area chart");
68 chart->setChartTitle("Area chart");
69 chart->setRenderHint(QPainter::Antialiasing);
69 chart->setRenderHint(QPainter::Antialiasing);
70 baseLayout->addWidget(chart, 1, 0);
70 baseLayout->addWidget(chart, 1, 0);
71 {
71 {
72 QLineSeries *series1 = new QLineSeries(chart);
72 QLineSeries *series1 = new QLineSeries(chart);
73 foreach (Data data, m_dataTable.first())
73 foreach (Data data, m_dataTable.first())
74 series1->add(data.first);
74 series1->add(data.first);
75 QLineSeries *series2 = new QLineSeries(chart);
75 QLineSeries *series2 = new QLineSeries(chart);
76 foreach (Data data, m_dataTable.last())
76 foreach (Data data, m_dataTable.last())
77 series2->add(data.first);
77 series2->add(data.first);
78 QAreaSeries *series = new QAreaSeries(series1, series2);
78 QAreaSeries *series = new QAreaSeries(series1, series2);
79 chart->addSeries(series);
79 chart->addSeries(series);
80 }
80 }
81 m_charts << chart;
81 m_charts << chart;
82
82
83 // bar chart
83 // bar chart
84 chart = new QChartView();
84 chart = new QChartView();
85 chart->setChartTitle("bar chart");
85 chart->setChartTitle("bar chart");
86 chart->setRenderHint(QPainter::Antialiasing);
86 chart->setRenderHint(QPainter::Antialiasing);
87 baseLayout->addWidget(chart, 1, 1);
87 baseLayout->addWidget(chart, 1, 1);
88 m_charts << chart;
88 m_charts << chart;
89
89
90 // line chart
90 // line chart
91 chart = new QChartView();
91 chart = new QChartView();
92 chart->setChartTitle("line chart");
92 chart->setChartTitle("line chart");
93 chart->setRenderHint(QPainter::Antialiasing);
93 chart->setRenderHint(QPainter::Antialiasing);
94 baseLayout->addWidget(chart, 1, 2);
94 baseLayout->addWidget(chart, 1, 2);
95 foreach (DataList list, m_dataTable) {
95 foreach (DataList list, m_dataTable) {
96 QLineSeries *series = new QLineSeries(chart);
96 QLineSeries *series = new QLineSeries(chart);
97 foreach (Data data, list)
97 foreach (Data data, list)
98 series->add(data.first);
98 series->add(data.first);
99 chart->addSeries(series);
99 chart->addSeries(series);
100 }
100 }
101 m_charts << chart;
101 m_charts << chart;
102
102
103 // pie chart
103 // pie chart
104 chart = new QChartView();
104 chart = new QChartView();
105 chart->setChartTitle("pie chart");
105 chart->setChartTitle("pie chart");
106 chart->setRenderHint(QPainter::Antialiasing);
106 chart->setRenderHint(QPainter::Antialiasing);
107 baseLayout->addWidget(chart, 2, 0);
107 baseLayout->addWidget(chart, 2, 0);
108
108
109 qreal pieSize = 1.0 / m_dataTable.count();
109 qreal pieSize = 1.0 / m_dataTable.count();
110 for (int i=0; i<m_dataTable.count(); i++) {
110 for (int i=0; i<m_dataTable.count(); i++) {
111 QPieSeries *series = new QPieSeries(chart);
111 QPieSeries *series = new QPieSeries(chart);
112 foreach (Data data, m_dataTable[i])
112 foreach (Data data, m_dataTable[i])
113 series->add(data.first.x(), data.second);
113 series->add(data.first.y(), data.second);
114 qreal hPos = (pieSize / 2) + (i / (qreal) m_dataTable.count());
114 qreal hPos = (pieSize / 2) + (i / (qreal) m_dataTable.count());
115 series->setPieSize(pieSize);
115 series->setPieSize(pieSize);
116 series->setPiePosition(hPos, 0.5);
116 series->setPiePosition(hPos, 0.5);
117 chart->addSeries(series);
117 chart->addSeries(series);
118 }
118 }
119 m_charts << chart;
119 m_charts << chart;
120
120
121 // spine chart
121 // spine chart
122 chart = new QChartView();
122 chart = new QChartView();
123 chart->setChartTitle("spline chart");
123 chart->setChartTitle("spline chart");
124 chart->setRenderHint(QPainter::Antialiasing);
124 chart->setRenderHint(QPainter::Antialiasing);
125 baseLayout->addWidget(chart, 2, 1);
125 baseLayout->addWidget(chart, 2, 1);
126 foreach (DataList list, m_dataTable) {
126 foreach (DataList list, m_dataTable) {
127 QSplineSeries *series = new QSplineSeries(chart);
127 QSplineSeries *series = new QSplineSeries(chart);
128 foreach (Data data, list)
128 foreach (Data data, list)
129 series->add(data.first);
129 series->add(data.first);
130 chart->addSeries(series);
130 chart->addSeries(series);
131 }
131 }
132 m_charts << chart;
132 m_charts << chart;
133
133
134 // scatter chart
134 // scatter chart
135 chart = new QChartView();
135 chart = new QChartView();
136 chart->setChartTitle("scatter chart");
136 chart->setChartTitle("scatter chart");
137 chart->setRenderHint(QPainter::Antialiasing);
137 chart->setRenderHint(QPainter::Antialiasing);
138 baseLayout->addWidget(chart, 2, 2);
138 baseLayout->addWidget(chart, 2, 2);
139 foreach (DataList list, m_dataTable) {
139 foreach (DataList list, m_dataTable) {
140 QScatterSeries *series = new QScatterSeries(chart);
140 QScatterSeries *series = new QScatterSeries(chart);
141 foreach (Data data, list)
141 foreach (Data data, list)
142 series->add(data.first);
142 series->add(data.first);
143 chart->addSeries(series);
143 chart->addSeries(series);
144 }
144 }
145 m_charts << chart;
145 m_charts << chart;
146
146
147 setLayout(baseLayout);
147 setLayout(baseLayout);
148 }
148 }
149
149
150 public Q_SLOTS:
150 public Q_SLOTS:
151
151
152 void updateTheme()
152 void updateTheme()
153 {
153 {
154 QChart::ChartTheme theme = (QChart::ChartTheme) m_themeComboBox->itemData(m_themeComboBox->currentIndex()).toInt();
154 QChart::ChartTheme theme = (QChart::ChartTheme) m_themeComboBox->itemData(m_themeComboBox->currentIndex()).toInt();
155 foreach (QChartView *chart, m_charts)
155 foreach (QChartView *chart, m_charts)
156 chart->setChartTheme(theme);
156 chart->setChartTheme(theme);
157 }
157 }
158
158
159 private:
159 private:
160 QList<QChartView*> m_charts;
160 QList<QChartView*> m_charts;
161 QComboBox *m_themeComboBox;
161 QComboBox *m_themeComboBox;
162 DataTable m_dataTable;
162 DataTable m_dataTable;
163 };
163 };
164
164
165 int main(int argc, char *argv[])
165 int main(int argc, char *argv[])
166 {
166 {
167 QApplication a(argc, argv);
167 QApplication a(argc, argv);
168
168
169 QMainWindow window;
169 QMainWindow window;
170
170
171 MainWidget* widget = new MainWidget();
171 MainWidget* widget = new MainWidget();
172
172
173 window.setCentralWidget(widget);
173 window.setCentralWidget(widget);
174 window.resize(900, 600);
174 window.resize(900, 600);
175 window.show();
175 window.show();
176
176
177 return a.exec();
177 return a.exec();
178 }
178 }
179
179
180 #include "main.moc"
180 #include "main.moc"
General Comments 0
You need to be logged in to leave comments. Login now