##// END OF EJS Templates
Improved handling of different serieses....
Mika Salmela -
r2484:f6ca68eccfda
parent child
Show More
@@ -25,6 +25,7
25 25 #include <QBarSet>
26 26 #include <QLegend>
27 27 #include <QBarCategoryAxis>
28 #include <QLineSeries>
28 29
29 30 #include <QBrush>
30 31 #include <QColor>
@@ -42,6 +43,12 int main(int argc, char *argv[])
42 43 QBarSet *set3 = new QBarSet("Apr");
43 44 QBarSet *set4 = new QBarSet("May");
44 45 QBarSet *set5 = new QBarSet("Jun");
46 QBarSet *set6 = new QBarSet("Jul");
47 QBarSet *set7 = new QBarSet("Aug");
48 QBarSet *set8 = new QBarSet("Sep");
49 QBarSet *set9 = new QBarSet("Oct");
50 QBarSet *set10 = new QBarSet("Nov");
51 QBarSet *set11 = new QBarSet("Dec");
45 52
46 53 // low bot med top upp
47 54 *set0 << 3 << 4 << 4.4 << 6 << 7;
@@ -50,10 +57,13 int main(int argc, char *argv[])
50 57 *set3 << 5 << 6 << 6.8 << 7 << 8;
51 58 *set4 << 4 << 5 << 5.2 << 6 << 7;
52 59 *set5 << 4 << 7 << 8.2 << 9 << 10;
60 *set6 << 2.5 << 5 << 5.4 << 6 << 7;
61 *set7 << 5 << 6.3 << 7.5 << 8 << 12;
62 *set8 << 2.6 << 5.1 << 5.7 << 8 << 9;
63 *set9 << 3.1 << 5.8 << 6.8 << 7 << 8;
64 *set10 << 4.2 << 5 << 5.8 << 6 << 7;
65 *set11 << 4.7 << 7 << 8.2 << 9 << 10;
53 66
54 set0->setBrush(QBrush(QColor(Qt::yellow)));
55
56 //set0->setColor(QColor(Qt::darkRed));
57 67 //![1]
58 68
59 69 //![2]
@@ -64,21 +74,41 int main(int argc, char *argv[])
64 74 series->append(set3);
65 75 series->append(set4);
66 76 series->append(set5);
67 series->type();
77 series->append(set6);
78 series->append(set7);
79 series->append(set8);
80 series->append(set9);
81 series->append(set10);
82 series->append(set11);
68 83 series->setName("Box & Whiskers");
69 //series->setBrush(QBrush(QColor(Qt::yellow)));
70 84 //![2]
71 85
86 QLineSeries *lineSeries = new QLineSeries();
87 lineSeries->append(0, 4.4);
88 lineSeries->append(1, 7.5);
89 lineSeries->append(2, 5.7);
90 lineSeries->append(3, 6.8);
91 lineSeries->append(4, 5.2);
92 lineSeries->append(5, 8.2);
93 lineSeries->append(6, 5.4);
94 lineSeries->append(7, 7.5);
95 lineSeries->append(8, 5.7);
96 lineSeries->append(9, 6.8);
97 lineSeries->append(10, 5.2);
98 lineSeries->append(11, 8.2);
99 lineSeries->setName("Medians");
100
72 101 //![3]
73 102 QChart *chart = new QChart();
74 103 chart->addSeries(series);
104 chart->addSeries(lineSeries);
75 105 chart->setTitle("Simple boxplotchart example");
76 106 chart->setAnimationOptions(QChart::SeriesAnimations);
77 107 //![3]
78 108
79 109 //![4]
80 110 QStringList categories;
81 categories << "Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun";
111 categories << "Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun" << "Jul" << "Aug" << "Sep" << "Oct" << "Nov" << "Dec";
82 112 QBarCategoryAxis *axis = new QBarCategoryAxis();
83 113 axis->append(categories);
84 114 chart->createDefaultAxes();
@@ -113,6 +113,13 void BoxPlotChartItem::handleUpdatedBars()
113 113 item->setBrush(m_series->brush());
114 114 item->setPen(m_series->pen());
115 115 }
116 // Override with QBarSet specific settings
117 foreach (QBarSet *set, m_boxTable.keys()) {
118 if (set->brush().style() != Qt::NoBrush)
119 m_boxTable.value(set)->setBrush(set->brush());
120 if (set->pen().style() != Qt::NoPen)
121 m_boxTable.value(set)->setPen(set->pen());
122 }
116 123 }
117 124
118 125 void BoxPlotChartItem::handleBarsetRemove(QList<QBarSet*> barSets)
@@ -177,6 +184,8 void BoxPlotChartItem::initializeLayout()
177 184
178 185 QVector<QRectF> BoxPlotChartItem::calculateLayout()
179 186 {
187 qDebug() << "ALERT EMPTY: BoxPlotChartItem::calculateLayout()";
188
180 189 return QVector<QRectF>();
181 190 }
182 191
@@ -61,11 +61,13 void BoxWhiskers::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
61 61 void BoxWhiskers::setBrush(const QBrush &brush)
62 62 {
63 63 m_brush = brush;
64 update();
64 65 }
65 66
66 67 void BoxWhiskers::setPen(const QPen &pen)
67 68 {
68 69 m_pen = pen;
70 update();
69 71 }
70 72
71 73 void BoxWhiskers::setLayout(const BoxWhiskersData &data)
@@ -168,11 +168,11 void QBoxPlotSeriesPrivate::initializeGraphics(QGraphicsItem* parent)
168 168 connect(m_chart->d_ptr->m_dataset, SIGNAL(seriesRemoved(QAbstractSeries*)), this, SLOT(handleSeriesRemove(QAbstractSeries*)) );
169 169
170 170 QList<QAbstractSeries *> serieses = m_chart->series();
171 boxPlot->m_seriesCount = serieses.count();
172 171
173 172 // Tries to find this series from the Chart's list of serieses and deduce the index
174 173 int index = 0;
175 174 foreach (QAbstractSeries *s, serieses) {
175 if (s->type() == QAbstractSeries::SeriesTypeBoxPlot) {
176 176 if (q == static_cast<QBoxPlotSeries *>(s)) {
177 177 boxPlot->m_seriesIndex = index;
178 178 m_index = index;
@@ -180,6 +180,8 void QBoxPlotSeriesPrivate::initializeGraphics(QGraphicsItem* parent)
180 180 index++;
181 181 }
182 182 }
183 boxPlot->m_seriesCount = index;
184 }
183 185
184 186 // Make BoxPlotChartItem to instantiate box & whisker items
185 187 boxPlot->handleDataStructureChanged();
@@ -200,12 +202,6 void QBoxPlotSeriesPrivate::initializeTheme(int index, ChartTheme* theme, bool f
200 202 if (forced || m_pen == QPen(Qt::NoPen)) {
201 203 QPen pen = theme->outlinePen();
202 204 pen.setCosmetic(true);
203
204 // QPen pen;
205 // pen.setColor(ChartThemeManager::colorAt(gradients.at(index % gradients.size()), 1.0));
206 // pen.setWidthF(2.0);
207 // pen.setCosmetic(true);
208
209 205 q->setPen(pen);
210 206 }
211 207 }
@@ -262,11 +258,11 void QBoxPlotSeriesPrivate::handleSeriesChange(QAbstractSeries *series)
262 258
263 259 if (m_chart) {
264 260 QList<QAbstractSeries *> serieses = m_chart->series();
265 boxPlot->m_seriesCount = serieses.count();
266 261
267 262 // Tries to find this series from the Chart's list of serieses and deduce the index
268 263 int index = 0;
269 264 foreach (QAbstractSeries *s, serieses) {
265 if (s->type() == QAbstractSeries::SeriesTypeBoxPlot) {
270 266 if (q == static_cast<QBoxPlotSeries *>(s)) {
271 267 boxPlot->m_seriesIndex = index;
272 268 m_index = index;
@@ -274,6 +270,8 void QBoxPlotSeriesPrivate::handleSeriesChange(QAbstractSeries *series)
274 270 index++;
275 271 }
276 272 }
273 boxPlot->m_seriesCount = index;
274 }
277 275
278 276 boxPlot->handleDataStructureChanged();
279 277 }
@@ -76,11 +76,26 MainWidget::MainWidget(QWidget *parent) :
76 76 connect(addBoxButton, SIGNAL(clicked()), this, SLOT(addBox()));
77 77 grid->addWidget(addBoxButton, rowPos++, 1);
78 78
79 // Create insert a box button
80 QPushButton *insertBoxButton = new QPushButton("Insert a box");
81 connect(insertBoxButton, SIGNAL(clicked()), this, SLOT(insertBox()));
82 grid->addWidget(insertBoxButton, rowPos++, 1);
83
79 84 // Create add a single box button
80 85 QPushButton *removeBoxButton = new QPushButton("Remove a box");
81 86 connect(removeBoxButton, SIGNAL(clicked()), this, SLOT(removeBox()));
82 87 grid->addWidget(removeBoxButton, rowPos++, 1);
83 88
89 // Create clear button
90 QPushButton *clearButton = new QPushButton("Clear");
91 connect(clearButton, SIGNAL(clicked()), this, SLOT(clear()));
92 grid->addWidget(clearButton, rowPos++, 1);
93
94 // Create set brush button
95 QPushButton *setBrushButton = new QPushButton("Set brush");
96 connect(setBrushButton, SIGNAL(clicked()), this, SLOT(setBrush()));
97 grid->addWidget(setBrushButton, rowPos++, 1);
98
84 99 initThemeCombo(grid);
85 100 initCheckboxes(grid);
86 101
@@ -208,6 +223,8 void MainWidget::addSeries()
208 223
209 224 void MainWidget::removeSeries()
210 225 {
226 qDebug() << "BoxPlotTester::MainWidget::removeSeries()";
227
211 228 if (nSeries > 0) {
212 229 nSeries--;
213 230 m_chart->removeSeries(m_series[nSeries]);
@@ -233,9 +250,25 void MainWidget::addBox()
233 250 }
234 251 }
235 252
253 void MainWidget::insertBox()
254 {
255 qDebug() << "BoxPlotTester::MainWidget::insertBox()";
256
257 if (nSeries > 0) {
258 QBarSet *newSet = new QBarSet("New");
259 *newSet << 2 << 6 << 6.8 << 7 << 10;
260
261 m_series[0]->insert(1, newSet);
262
263 m_axis->append(addCategories[nNewBoxes]);
264
265 nNewBoxes++;
266 }
267 }
268
236 269 void MainWidget::removeBox()
237 270 {
238 qDebug() << "MainWidget::removeBox";
271 qDebug() << "BoxPlotTester::MainWidget::removeBox";
239 272
240 273 if (nSeries > 0) {
241 274 QList<QBarSet *> sets = m_series[0]->barSets();
@@ -245,6 +278,29 void MainWidget::removeBox()
245 278 }
246 279 }
247 280
281 void MainWidget::clear()
282 {
283 qDebug() << "BoxPlotTester::MainWidget::clear";
284
285 if (nSeries > 0) {
286 m_series[0]->clear();
287 } else {
288 qDebug() << "Create a series first";
289 }
290 }
291
292 void MainWidget::setBrush()
293 {
294 qDebug() << "BoxPlotTester::MainWidget::setBrush";
295
296 if (nSeries > 0) {
297 QList<QBarSet *> sets = m_series[0]->barSets();
298 sets.at(1)->setBrush(QBrush(QColor(Qt::yellow)));
299 } else {
300 qDebug() << "Create a series first";
301 }
302 }
303
248 304 void MainWidget::animationToggled(bool enabled)
249 305 {
250 306 qDebug() << "BoxPlotTester::Animation toggled to " << enabled;
@@ -49,7 +49,10 private slots:
49 49 void addSeries();
50 50 void removeSeries();
51 51 void addBox();
52 void insertBox();
52 53 void removeBox();
54 void clear();
55 void setBrush();
53 56 void animationToggled(bool enabled);
54 57 void legendToggled(bool enabled);
55 58 void titleToggled(bool enabled);
General Comments 0
You need to be logged in to leave comments. Login now