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