##// END OF EJS Templates
tablemodelchart: axes re-enabled on toggle (pie disables them)
Marek Rosa -
r878:2ebc46308a23
parent child
Show More
@@ -33,6 +33,7
33 #include <QBarSet>
33 #include <QBarSet>
34 #include <QPushButton>
34 #include <QPushButton>
35 #include <QRadioButton>
35 #include <QRadioButton>
36 #include <QLabel>
36 #include <QSpinBox>
37 #include <QSpinBox>
37 #include <QTime>
38 #include <QTime>
38
39
@@ -64,6 +65,8 TableWidget::TableWidget(QWidget *parent)
64 QPushButton* removeRowButton = new QPushButton("Remove row");
65 QPushButton* removeRowButton = new QPushButton("Remove row");
65 connect(removeRowButton, SIGNAL(clicked()), this, SLOT(removeRow()));
66 connect(removeRowButton, SIGNAL(clicked()), this, SLOT(removeRow()));
66
67
68 QLabel *spinBoxLabel = new QLabel("Rows affected:");
69
67 // spin box for setting number of affected items (add, remove)
70 // spin box for setting number of affected items (add, remove)
68 m_linesCountSpinBox = new QSpinBox;
71 m_linesCountSpinBox = new QSpinBox;
69 m_linesCountSpinBox->setRange(1, 10);
72 m_linesCountSpinBox->setRange(1, 10);
@@ -71,6 +74,7 TableWidget::TableWidget(QWidget *parent)
71
74
72 // buttons layout
75 // buttons layout
73 QVBoxLayout* buttonsLayout = new QVBoxLayout;
76 QVBoxLayout* buttonsLayout = new QVBoxLayout;
77 buttonsLayout->addWidget(spinBoxLabel);
74 buttonsLayout->addWidget(m_linesCountSpinBox);
78 buttonsLayout->addWidget(m_linesCountSpinBox);
75 buttonsLayout->addWidget(addRowAboveButton);
79 buttonsLayout->addWidget(addRowAboveButton);
76 buttonsLayout->addWidget(addRowBelowButton);
80 buttonsLayout->addWidget(addRowBelowButton);
@@ -85,12 +89,12 TableWidget::TableWidget(QWidget *parent)
85 m_areaRadioButton = new QRadioButton("Area");
89 m_areaRadioButton = new QRadioButton("Area");
86 m_barRadioButton = new QRadioButton("Bar");
90 m_barRadioButton = new QRadioButton("Bar");
87
91
88 connect(m_lineRadioButton, SIGNAL(toggled(bool)), this, SLOT(updateChartType()));
92 connect(m_lineRadioButton, SIGNAL(toggled(bool)), this, SLOT(updateChartType(bool)));
89 connect(m_splineRadioButton, SIGNAL(toggled(bool)), this, SLOT(updateChartType()));
93 connect(m_splineRadioButton, SIGNAL(toggled(bool)), this, SLOT(updateChartType(bool)));
90 connect(m_scatterRadioButton, SIGNAL(toggled(bool)), this, SLOT(updateChartType()));
94 connect(m_scatterRadioButton, SIGNAL(toggled(bool)), this, SLOT(updateChartType(bool)));
91 connect(m_pieRadioButton, SIGNAL(toggled(bool)), this, SLOT(updateChartType()));
95 connect(m_pieRadioButton, SIGNAL(toggled(bool)), this, SLOT(updateChartType(bool)));
92 connect(m_areaRadioButton, SIGNAL(toggled(bool)), this, SLOT(updateChartType()));
96 connect(m_areaRadioButton, SIGNAL(toggled(bool)), this, SLOT(updateChartType(bool)));
93 connect(m_barRadioButton, SIGNAL(toggled(bool)), this, SLOT(updateChartType()));
97 connect(m_barRadioButton, SIGNAL(toggled(bool)), this, SLOT(updateChartType(bool)));
94 m_lineRadioButton->setChecked(true);
98 m_lineRadioButton->setChecked(true);
95
99
96 // radio buttons layout
100 // radio buttons layout
@@ -130,179 +134,197 void TableWidget::removeRow()
130 m_model->removeRows(m_tableView->currentIndex().row(), qMin(m_model->rowCount() - m_tableView->currentIndex().row(), m_linesCountSpinBox->value()));
134 m_model->removeRows(m_tableView->currentIndex().row(), qMin(m_model->rowCount() - m_tableView->currentIndex().row(), m_linesCountSpinBox->value()));
131 }
135 }
132
136
133 void TableWidget::updateChartType()
137 void TableWidget::updateChartType(bool toggle)
134 {
138 {
135 m_chart->removeAllSeries();
139 // this if is needed, so that the function is only called once.
136 m_model->clearMapping();
140 // For the radioButton that was enabled.
137
141 if (toggle) {
138 QString seriesColorHex = "#000000";
142 m_chart->removeAllSeries();
139 QPen pen;
143
140 pen.setWidth(2);
144 // renable axes of the chart (pie hides them)
141
145 // x axis
142 if (m_lineRadioButton->isChecked())
146 QChartAxis *axis = m_chart->axisX();
143 {
147 axis->setAxisVisible(true);
144 // series 1
148 axis->setGridLineVisible(true);
145 m_series = new QLineSeries;
149 axis->setLabelsVisible(true);
146 m_series->setModel(m_model);
150
147 m_series->setModelMapping(0,1, Qt::Vertical);
151 // y axis
148 m_series->setModelMappingRange(1, 4);
152 axis = m_chart->axisY();
149 m_chart->addSeries(m_series);
153 axis->setAxisVisible(true);
150 seriesColorHex = "#" + QString::number(m_series->pen().color().rgb(), 16).right(6).toUpper();
154 axis->setGridLineVisible(true);
151 m_model->addMapping(seriesColorHex, QRect(0, 1, 2, 4));
155 axis->setLabelsVisible(true);
152
156
153 // series 2
157 m_model->clearMapping();
154 m_series = new QLineSeries;
158
155 m_series->setModel(m_model);
159 QString seriesColorHex = "#000000";
156 m_series->setModelMapping(2,3, Qt::Vertical);
160 QPen pen;
157 m_chart->addSeries(m_series);
161 pen.setWidth(2);
158 seriesColorHex = "#" + QString::number(m_series->pen().color().rgb(), 16).right(6).toUpper();
162
159 m_model->addMapping(seriesColorHex, QRect(2, 0, 2, 1000));
163 if (m_lineRadioButton->isChecked())
160
164 {
161 // series 3
165 // series 1
162 m_series = new QLineSeries;
166 m_series = new QLineSeries;
163 m_series->setModel(m_model);
167 m_series->setModel(m_model);
164 m_series->setModelMapping(4,5, Qt::Vertical);
168 m_series->setModelMapping(0,1, Qt::Vertical);
165 m_series->setModelMappingRange(2, 0);
169 m_series->setModelMappingRange(1, 4);
166 m_chart->addSeries(m_series);
170 m_chart->addSeries(m_series);
167 seriesColorHex = "#" + QString::number(m_series->pen().color().rgb(), 16).right(6).toUpper();
171 seriesColorHex = "#" + QString::number(m_series->pen().color().rgb(), 16).right(6).toUpper();
168 m_model->addMapping(seriesColorHex, QRect(4, 2, 2, 1000));
172 m_model->addMapping(seriesColorHex, QRect(0, 1, 2, 4));
169 }
173
170 else if (m_splineRadioButton->isChecked())
174 // series 2
171 {
175 m_series = new QLineSeries;
172 // series 1
176 m_series->setModel(m_model);
173 m_series = new QSplineSeries;
177 m_series->setModelMapping(2,3, Qt::Vertical);
174 m_series->setModel(m_model);
178 m_chart->addSeries(m_series);
175 m_series->setModelMapping(0,1, Qt::Vertical);
179 seriesColorHex = "#" + QString::number(m_series->pen().color().rgb(), 16).right(6).toUpper();
176 m_series->setModelMappingRange(1, 4);
180 m_model->addMapping(seriesColorHex, QRect(2, 0, 2, 1000));
177 // series->setModelMapping(0,1, Qt::Horizontal);
181
178 m_chart->addSeries(m_series);
182 // series 3
179 seriesColorHex = "#" + QString::number(m_series->pen().color().rgb(), 16).right(6).toUpper();
183 m_series = new QLineSeries;
180 m_model->addMapping(seriesColorHex, QRect(0, 1, 2, 4));
184 m_series->setModel(m_model);
181
185 m_series->setModelMapping(4,5, Qt::Vertical);
182 // series 2
186 m_series->setModelMappingRange(2, 0);
183 m_series = new QSplineSeries;
187 m_chart->addSeries(m_series);
184 m_series->setModel(m_model);
188 seriesColorHex = "#" + QString::number(m_series->pen().color().rgb(), 16).right(6).toUpper();
185 m_series->setModelMapping(2,3, Qt::Vertical);
189 m_model->addMapping(seriesColorHex, QRect(4, 2, 2, 1000));
186 m_series->setModelMappingRange(0, 0);
190 }
187 // series->setModelMapping(2,3, Qt::Horizontal);
191 else if (m_splineRadioButton->isChecked())
188 m_chart->addSeries(m_series);
192 {
189 seriesColorHex = "#" + QString::number(m_series->pen().color().rgb(), 16).right(6).toUpper();
193 // series 1
190 m_model->addMapping(seriesColorHex, QRect(2, 0, 2, 1000));
194 m_series = new QSplineSeries;
191
195 m_series->setModel(m_model);
192 // series 3
196 m_series->setModelMapping(0,1, Qt::Vertical);
193 m_series = new QSplineSeries;
197 m_series->setModelMappingRange(1, 4);
194 m_series->setModel(m_model);
198 // series->setModelMapping(0,1, Qt::Horizontal);
195 m_series->setModelMapping(4,5, Qt::Vertical);
199 m_chart->addSeries(m_series);
196 m_series->setModelMappingRange(2, 0);
200 seriesColorHex = "#" + QString::number(m_series->pen().color().rgb(), 16).right(6).toUpper();
197 // series->setModelMapping(4,5, Qt::Horizontal);
201 m_model->addMapping(seriesColorHex, QRect(0, 1, 2, 4));
198 m_chart->addSeries(m_series);
202
199 seriesColorHex = "#" + QString::number(m_series->pen().color().rgb(), 16).right(6).toUpper();
203 // series 2
200 m_model->addMapping(seriesColorHex, QRect(4, 2, 2, 1000));
204 m_series = new QSplineSeries;
201 }
205 m_series->setModel(m_model);
202 else if (m_scatterRadioButton->isChecked())
206 m_series->setModelMapping(2,3, Qt::Vertical);
203 {
207 m_series->setModelMappingRange(0, 0);
204 // series 1
208 // series->setModelMapping(2,3, Qt::Horizontal);
205 m_series = new QScatterSeries;
209 m_chart->addSeries(m_series);
206 m_series->setModel(m_model);
210 seriesColorHex = "#" + QString::number(m_series->pen().color().rgb(), 16).right(6).toUpper();
207 m_series->setModelMapping(0,1, Qt::Vertical);
211 m_model->addMapping(seriesColorHex, QRect(2, 0, 2, 1000));
208 m_series->setModelMappingRange(2, 0);
212
209 // series->setModelMapping(0,1, Qt::Horizontal);
213 // series 3
210 m_chart->addSeries(m_series);
214 m_series = new QSplineSeries;
211
215 m_series->setModel(m_model);
212 seriesColorHex = "#" + QString::number(m_series->brush().color().rgb(), 16).right(6).toUpper();
216 m_series->setModelMapping(4,5, Qt::Vertical);
213 m_model->addMapping(seriesColorHex, QRect(0, 2, 2, 1000));
217 m_series->setModelMappingRange(2, 0);
214
218 // series->setModelMapping(4,5, Qt::Horizontal);
215 // series 2
219 m_chart->addSeries(m_series);
216 m_series = new QScatterSeries;
220 seriesColorHex = "#" + QString::number(m_series->pen().color().rgb(), 16).right(6).toUpper();
217 m_series->setModel(m_model);
221 m_model->addMapping(seriesColorHex, QRect(4, 2, 2, 1000));
218 m_series->setModelMapping(2,3, Qt::Vertical);
222 }
219 m_series->setModelMappingRange(1, 6);
223 else if (m_scatterRadioButton->isChecked())
220 // series->setModelMapping(2,3, Qt::Horizontal);
224 {
221 m_chart->addSeries(m_series);
225 // series 1
222
226 m_series = new QScatterSeries;
223 seriesColorHex = "#" + QString::number(m_series->brush().color().rgb(), 16).right(6).toUpper();
227 m_series->setModel(m_model);
224 m_model->addMapping(seriesColorHex, QRect(2, 1, 2, 6));
228 m_series->setModelMapping(0,1, Qt::Vertical);
225
229 m_series->setModelMappingRange(2, 0);
226 // series 3
230 // series->setModelMapping(0,1, Qt::Horizontal);
227 m_series = new QScatterSeries;
231 m_chart->addSeries(m_series);
228 m_series->setModel(m_model);
232
229 m_series->setModelMapping(4,5, Qt::Vertical);
233 seriesColorHex = "#" + QString::number(m_series->brush().color().rgb(), 16).right(6).toUpper();
230 // series->setModelMapping(4,5, Qt::Horizontal);
234 m_model->addMapping(seriesColorHex, QRect(0, 2, 2, 1000));
231 m_chart->addSeries(m_series);
235
232 seriesColorHex = "#" + QString::number(m_series->brush().color().rgb(), 16).right(6).toUpper();
236 // series 2
233 m_model->addMapping(seriesColorHex, QRect(4, 0, 2, 1000));
237 m_series = new QScatterSeries;
234 }
238 m_series->setModel(m_model);
235 else if (m_pieRadioButton->isChecked())
239 m_series->setModelMapping(2,3, Qt::Vertical);
236 {
240 m_series->setModelMappingRange(1, 6);
237 // pie 1
241 // series->setModelMapping(2,3, Qt::Horizontal);
238 QPieSeries* pieSeries = new QPieSeries;
242 m_chart->addSeries(m_series);
239 pieSeries->setModel(m_model);
243
240 pieSeries->setModelMapping(0,0, Qt::Vertical);
244 seriesColorHex = "#" + QString::number(m_series->brush().color().rgb(), 16).right(6).toUpper();
241 pieSeries->setLabelsVisible(true);
245 m_model->addMapping(seriesColorHex, QRect(2, 1, 2, 6));
242 pieSeries->setPieSize(0.4);
246
243 pieSeries->setPiePosition(0.2, 0.35);
247 // series 3
244
248 m_series = new QScatterSeries;
245 m_chart->addSeries(pieSeries);
249 m_series->setModel(m_model);
246 seriesColorHex = "#" + QString::number(pieSeries->slices().at(pieSeries->slices().count()/2)->brush().color().rgb(), 16).right(6).toUpper();
250 m_series->setModelMapping(4,5, Qt::Vertical);
247 m_model->addMapping(seriesColorHex, QRect(0, 0, 1, 1000));
251 // series->setModelMapping(4,5, Qt::Horizontal);
248
252 m_chart->addSeries(m_series);
249 // pie 2
253 seriesColorHex = "#" + QString::number(m_series->brush().color().rgb(), 16).right(6).toUpper();
250 pieSeries = new QPieSeries;
254 m_model->addMapping(seriesColorHex, QRect(4, 0, 2, 1000));
251 pieSeries->setModel(m_model);
255 }
252 pieSeries->setModelMapping(1,1, Qt::Vertical);
256 else if (m_pieRadioButton->isChecked())
253 pieSeries->setLabelsVisible(true);
257 {
254 pieSeries->setPieSize(0.4);
258 // pie 1
255 pieSeries->setPiePosition(0.8, 0.35);
259 QPieSeries* pieSeries = new QPieSeries;
256 m_chart->addSeries(pieSeries);
260 pieSeries->setModel(m_model);
257 seriesColorHex = "#" + QString::number(pieSeries->slices().at(pieSeries->slices().count()/2)->brush().color().rgb(), 16).right(6).toUpper();
261 pieSeries->setModelMapping(0,0, Qt::Vertical);
258 m_model->addMapping(seriesColorHex, QRect(1, 0, 1, 1000));
262 pieSeries->setLabelsVisible(true);
259
263 pieSeries->setPieSize(0.4);
260 // pie 3
264 pieSeries->setPiePosition(0.2, 0.35);
261 pieSeries = new QPieSeries;
265
262 pieSeries->setModel(m_model);
266 m_chart->addSeries(pieSeries);
263 pieSeries->setModelMapping(2,2, Qt::Vertical);
267 seriesColorHex = "#" + QString::number(pieSeries->slices().at(pieSeries->slices().count()/2)->brush().color().rgb(), 16).right(6).toUpper();
264 pieSeries->setLabelsVisible(true);
268 m_model->addMapping(seriesColorHex, QRect(0, 0, 1, 1000));
265 pieSeries->setPieSize(0.4);
269
266 pieSeries->setPiePosition(0.5, 0.65);
270 // pie 2
267 m_chart->addSeries(pieSeries);
271 pieSeries = new QPieSeries;
268 seriesColorHex = "#" + QString::number(pieSeries->slices().at(pieSeries->slices().count()/2)->brush().color().rgb(), 16).right(6).toUpper();
272 pieSeries->setModel(m_model);
269 m_model->addMapping(seriesColorHex, QRect(2, 0, 1, 1000));
273 pieSeries->setModelMapping(1,1, Qt::Vertical);
270 }
274 pieSeries->setLabelsVisible(true);
271 else if (m_areaRadioButton->isChecked())
275 pieSeries->setPieSize(0.4);
272 {
276 pieSeries->setPiePosition(0.8, 0.35);
273 QLineSeries* upperLineSeries = new QLineSeries;
277 m_chart->addSeries(pieSeries);
274 upperLineSeries->setModel(m_model);
278 seriesColorHex = "#" + QString::number(pieSeries->slices().at(pieSeries->slices().count()/2)->brush().color().rgb(), 16).right(6).toUpper();
275 upperLineSeries->setModelMapping(0, 1, Qt::Vertical);
279 m_model->addMapping(seriesColorHex, QRect(1, 0, 1, 1000));
276 upperLineSeries->setModelMappingRange(1, 5);
280
277 QLineSeries* lowerLineSeries = new QLineSeries;
281 // pie 3
278 lowerLineSeries->setModel(m_model);
282 pieSeries = new QPieSeries;
279 lowerLineSeries->setModelMapping(2, 3, Qt::Vertical);
283 pieSeries->setModel(m_model);
280 QAreaSeries* areaSeries = new QAreaSeries(upperLineSeries, lowerLineSeries);
284 pieSeries->setModelMapping(2,2, Qt::Vertical);
281 m_chart->addSeries(areaSeries);
285 pieSeries->setLabelsVisible(true);
282 seriesColorHex = "#" + QString::number(areaSeries->brush().color().rgb(), 16).right(6).toUpper();
286 pieSeries->setPieSize(0.4);
283 m_model->addMapping(seriesColorHex, QRect(0, 1, 2, 5));
287 pieSeries->setPiePosition(0.5, 0.65);
284 m_model->addMapping(seriesColorHex, QRect(2, 0, 2, 1000));
288 m_chart->addSeries(pieSeries);
285 }
289 seriesColorHex = "#" + QString::number(pieSeries->slices().at(pieSeries->slices().count()/2)->brush().color().rgb(), 16).right(6).toUpper();
286 else if (m_barRadioButton->isChecked())
290 m_model->addMapping(seriesColorHex, QRect(2, 0, 1, 1000));
287 {
291 }
288 QBarSeries* barSeries = new QBarSeries(QStringList());
292 else if (m_areaRadioButton->isChecked())
289 barSeries->setModel(m_model);
293 {
290 barSeries->setModelMapping(5, 2, 4, Qt::Vertical);
294 QLineSeries* upperLineSeries = new QLineSeries;
291 barSeries->setToolTipEnabled(true);
295 upperLineSeries->setModel(m_model);
292 m_chart->addSeries(barSeries);
296 upperLineSeries->setModelMapping(0, 1, Qt::Vertical);
293 for (int i = 0; i < barSeries->barsetCount(); i++) {
297 upperLineSeries->setModelMappingRange(1, 5);
294 seriesColorHex = "#" + QString::number(barSeries->barsetAt(i)->brush().color().rgb(), 16).right(6).toUpper();
298 QLineSeries* lowerLineSeries = new QLineSeries;
295 m_model->addMapping(seriesColorHex, QRect(2 + i, 0, 1, 1000));
299 lowerLineSeries->setModel(m_model);
300 lowerLineSeries->setModelMapping(2, 3, Qt::Vertical);
301 QAreaSeries* areaSeries = new QAreaSeries(upperLineSeries, lowerLineSeries);
302 m_chart->addSeries(areaSeries);
303 seriesColorHex = "#" + QString::number(areaSeries->brush().color().rgb(), 16).right(6).toUpper();
304 m_model->addMapping(seriesColorHex, QRect(0, 1, 2, 5));
305 m_model->addMapping(seriesColorHex, QRect(2, 0, 2, 1000));
306 }
307 else if (m_barRadioButton->isChecked())
308 {
309 QBarSeries* barSeries = new QBarSeries(QStringList());
310 barSeries->setModel(m_model);
311 barSeries->setModelMapping(5, 2, 4, Qt::Vertical);
312 barSeries->setToolTipEnabled(true);
313 m_chart->addSeries(barSeries);
314 for (int i = 0; i < barSeries->barsetCount(); i++) {
315 seriesColorHex = "#" + QString::number(barSeries->barsetAt(i)->brush().color().rgb(), 16).right(6).toUpper();
316 m_model->addMapping(seriesColorHex, QRect(2 + i, 0, 1, 1000));
317 }
296 }
318 }
297 }
298
319
299
320
300 m_chart->axisX()->setRange(0, 500);
321 m_chart->axisX()->setRange(0, 500);
301 m_chart->axisY()->setRange(0, 120);
322 m_chart->axisY()->setRange(0, 120);
302
323
303 // repaint table view colors
324 // repaint table view colors
304 m_tableView->repaint();
325 m_tableView->repaint();
305 m_tableView->setFocus();
326 m_tableView->setFocus();
327 }
306 }
328 }
307
329
308 TableWidget::~TableWidget()
330 TableWidget::~TableWidget()
@@ -46,7 +46,7 public:
46 void addRowAbove();
46 void addRowAbove();
47 void addRowBelow();
47 void addRowBelow();
48 void removeRow();
48 void removeRow();
49 void updateChartType();
49 void updateChartType(bool toggle);
50
50
51 private:
51 private:
52 QChartView* m_chartView;
52 QChartView* m_chartView;
General Comments 0
You need to be logged in to leave comments. Login now