@@ -49,6 +49,9 void QChart::addSeries(QChartSeries* series) | |||
|
49 | 49 | case QChartSeries::SeriesTypeLine: { |
|
50 | 50 | |
|
51 | 51 | QXYChartSeries* xyseries = static_cast<QXYChartSeries*>(series); |
|
52 | // Use color defined by theme in case the series does not define a custom color | |
|
53 | if (!xyseries->color().isValid() && m_themeColors.count()) | |
|
54 | xyseries->setColor(m_themeColors.takeFirst()); | |
|
52 | 55 | |
|
53 | 56 | XYPlotDomain domain; |
|
54 | 57 | //TODO "nice numbers algorithm" |
@@ -71,16 +74,6 void QChart::addSeries(QChartSeries* series) | |||
|
71 | 74 | m_xyLineChartItems<<item; |
|
72 | 75 | break; |
|
73 | 76 | } |
|
74 | // TODO: Not tested: | |
|
75 | // case QChartSeries::SeriesTypeScatter: { | |
|
76 | // QScatterSeries *scatter = qobject_cast<QScatterSeries *>(series); | |
|
77 | // if (scatter) { | |
|
78 | // scatter->d->setParentItem(this); | |
|
79 | // scene()->addItem(scatter->d); | |
|
80 | // } | |
|
81 | // break; | |
|
82 | // } | |
|
83 | ||
|
84 | 77 | case QChartSeries::SeriesTypeBar: { |
|
85 | 78 | |
|
86 | 79 | qDebug() << "barSeries added"; |
@@ -92,39 +85,56 void QChart::addSeries(QChartSeries* series) | |||
|
92 | 85 | m_BarGroupItems.append(group); // If we need to access group later |
|
93 | 86 | break; |
|
94 | 87 | } |
|
95 | } | |
|
96 | } | |
|
97 | ||
|
98 | QChartSeries* QChart::createSeries(QChartSeries::QChartSeriesType type) | |
|
99 | { | |
|
100 | // TODO: support also other types; not only scatter and pie | |
|
101 | ||
|
102 | switch (type) { | |
|
103 | 88 | case QChartSeries::SeriesTypeScatter: { |
|
104 |
QScatterSeries *scatterSeries = |
|
|
89 | QScatterSeries *scatterSeries = qobject_cast<QScatterSeries *>(series); | |
|
105 | 90 | connect(this, SIGNAL(sizeChanged(QRectF)), |
|
106 | 91 | scatterSeries, SLOT(chartSizeChanged(QRectF))); |
|
107 | 92 | scatterSeries->d->setParentItem(this); |
|
108 | 93 | QColor nextColor = m_themeColors.takeFirst(); |
|
109 | 94 | nextColor.setAlpha(150); // TODO: default opacity? |
|
110 | 95 | scatterSeries->setMarkerColor(nextColor); |
|
111 | return scatterSeries; | |
|
112 | } | |
|
96 | } | |
|
113 | 97 | case QChartSeries::SeriesTypePie: { |
|
114 | 98 | // TODO: we now have also a list of y values as a parameter, it is ignored |
|
115 | 99 | // we should use a generic data class instead of list of x and y values |
|
116 |
QPieSeries *pieSeries = |
|
|
100 | QPieSeries *pieSeries = qobject_cast<QPieSeries *>(series); | |
|
117 | 101 | connect(this, SIGNAL(sizeChanged(QRectF)), |
|
118 | 102 | pieSeries, SLOT(chartSizeChanged(QRectF))); |
|
119 | 103 | // TODO: how to define the color for all the slices of a pie? |
|
120 | return pieSeries; | |
|
104 | } | |
|
105 | } | |
|
106 | } | |
|
107 | ||
|
108 | QChartSeries* QChart::createSeries(QChartSeries::QChartSeriesType type) | |
|
109 | { | |
|
110 | // TODO: support also other types; not only scatter and pie | |
|
111 | ||
|
112 | QChartSeries *series(0); | |
|
113 | ||
|
114 | switch (type) { | |
|
115 | case QChartSeries::SeriesTypeLine: { | |
|
116 | series = QXYChartSeries::create(); | |
|
117 | break; | |
|
118 | } | |
|
119 | case QChartSeries::SeriesTypeBar: { | |
|
120 | series = new BarChartSeries(this); | |
|
121 | break; | |
|
122 | } | |
|
123 | case QChartSeries::SeriesTypeScatter: { | |
|
124 | series = new QScatterSeries(this); | |
|
125 | break; | |
|
126 | } | |
|
127 | case QChartSeries::SeriesTypePie: { | |
|
128 | series = new QPieSeries(this); | |
|
129 | break; | |
|
121 | 130 | } |
|
122 | 131 | default: |
|
123 | 132 | Q_ASSERT(false); |
|
124 | 133 | break; |
|
125 | 134 | } |
|
126 | 135 | |
|
127 | return 0; | |
|
136 | addSeries(series); | |
|
137 | return series; | |
|
128 | 138 | } |
|
129 | 139 | |
|
130 | 140 | void QChart::setSize(const QSizeF& size) |
@@ -3,7 +3,7 | |||
|
3 | 3 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
4 | 4 | |
|
5 | 5 | QXYChartSeries::QXYChartSeries(QObject* parent):QChartSeries(parent), |
|
6 |
m_color( |
|
|
6 | m_color() | |
|
7 | 7 | { |
|
8 | 8 | } |
|
9 | 9 |
@@ -170,8 +170,19 void MainWidget::addSeries(QString series, QString data) | |||
|
170 | 170 | newSeries = m_chartWidget->createSeries(QChartSeries::SeriesTypePie); |
|
171 | 171 | Q_ASSERT(newSeries->setData(y)); |
|
172 | 172 | } else if (series == "Line") { |
|
173 | newSeries = m_chartWidget->createSeries(QChartSeries::SeriesTypePie); | |
|
174 | Q_ASSERT(newSeries->setData(x, y)); | |
|
173 | // TODO: adding data to an existing line series does not give any visuals for some reason | |
|
174 | // newSeries = m_chartWidget->createSeries(QChartSeries::SeriesTypeLine); | |
|
175 | // QXYChartSeries *lineSeries = static_cast<QXYChartSeries *>(newSeries); | |
|
176 | // lineSeries->setColor(Qt::blue); | |
|
177 | // for (int i(0); i < x.count() && i < y.count(); i++) { | |
|
178 | // lineSeries->add(x.at(i), y.at(i)); | |
|
179 | // } | |
|
180 | //Q_ASSERT(newSeries->setData(x, y)); | |
|
181 | QXYChartSeries* series0 = QXYChartSeries::create(); | |
|
182 | for (int i(0); i < x.count() && i < y.count(); i++) | |
|
183 | series0->add(x.at(i), y.at(i)); | |
|
184 | m_chartWidget->addSeries(series0); | |
|
185 | newSeries = series0; | |
|
175 | 186 | } else { |
|
176 | 187 | // TODO |
|
177 | 188 | } |
General Comments 0
You need to be logged in to leave comments.
Login now