@@ -67,6 +67,9 int main(int argc, char *argv[]) | |||
|
67 | 67 | QCategoriesAxis* axis = new QCategoriesAxis(); |
|
68 | 68 | axis->append(categories); |
|
69 | 69 | chart->setAxisX(series,axis); |
|
70 | // axis->setMinCategory(QString("Feb")); | |
|
71 | // axis->setMaxCategory(QString("May")); | |
|
72 | // axis->setRange(QString("Feb"), QString("Apr")); | |
|
70 | 73 | //![4] |
|
71 | 74 | |
|
72 | 75 | //![5] |
@@ -22,6 +22,7 | |||
|
22 | 22 | #include "qcategoriesaxis_p.h" |
|
23 | 23 | #include "chartcategoriesaxisx_p.h" |
|
24 | 24 | #include "chartcategoriesaxisy_p.h" |
|
25 | #include <qmath.h> | |
|
25 | 26 | |
|
26 | 27 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
27 | 28 | |
@@ -195,7 +196,12 void QCategoriesAxisPrivate::setMinCategory(const QString& minCategory) | |||
|
195 | 196 | if (minIndex == -1) { |
|
196 | 197 | return; |
|
197 | 198 | } |
|
198 | setRange(minIndex,m_max); | |
|
199 | ||
|
200 | int maxIndex = m_max; | |
|
201 | if (minIndex > maxIndex) { | |
|
202 | maxIndex = m_categories.count()-1; | |
|
203 | } | |
|
204 | setRange(minIndex - 0.5, maxIndex + 0.5); | |
|
199 | 205 | } |
|
200 | 206 | |
|
201 | 207 | void QCategoriesAxisPrivate::setMaxCategory(const QString& maxCategory) |
@@ -205,7 +211,10 void QCategoriesAxisPrivate::setMaxCategory(const QString& maxCategory) | |||
|
205 | 211 | if (maxIndex == -1) { |
|
206 | 212 | return; |
|
207 | 213 | } |
|
208 | setRange(m_min,maxIndex); | |
|
214 | if (maxIndex < m_min) { | |
|
215 | m_min = 0; | |
|
216 | } | |
|
217 | setRange(m_min - 0.5, maxIndex + 0.5); | |
|
209 | 218 | } |
|
210 | 219 | |
|
211 | 220 | void QCategoriesAxisPrivate::setRangeCategory(const QString& minCategory, const QString& maxCategory) |
@@ -219,7 +228,7 void QCategoriesAxisPrivate::setRangeCategory(const QString& minCategory, const | |||
|
219 | 228 | if (maxIndex == -1) { |
|
220 | 229 | return; |
|
221 | 230 | } |
|
222 | setRange(minIndex,maxIndex); | |
|
231 | setRange(minIndex -0.5, maxIndex + 0.5); | |
|
223 | 232 | } |
|
224 | 233 | |
|
225 | 234 | void QCategoriesAxisPrivate::setMin(const qreal min) |
@@ -234,6 +243,10 void QCategoriesAxisPrivate::setMax(const qreal max) | |||
|
234 | 243 | |
|
235 | 244 | void QCategoriesAxisPrivate::setRange(const qreal min, const qreal max) |
|
236 | 245 | { |
|
246 | if (max <= min) { | |
|
247 | // max must be greater than min | |
|
248 | return; | |
|
249 | } | |
|
237 | 250 | Q_Q(QCategoriesAxis); |
|
238 | 251 | bool changed = false; |
|
239 | 252 | if (!qFuzzyIsNull(m_min - min)) { |
@@ -247,7 +260,7 void QCategoriesAxisPrivate::setRange(const qreal min, const qreal max) | |||
|
247 | 260 | } |
|
248 | 261 | |
|
249 | 262 | if (changed) { |
|
250 |
emit this->changed(m_min, m_max, |
|
|
263 | emit this->changed(m_min, m_max, qCeil(m_max) -qCeil(m_min) +1, false); | |
|
251 | 264 | emit q->categoriesChanged(); |
|
252 | 265 | } |
|
253 | 266 | } |
@@ -234,6 +234,7 void ChartDataSet::setAxisX(QAbstractSeries *series, QAbstractAxis *axis) | |||
|
234 | 234 | oldAxis->deleteLater(); |
|
235 | 235 | } |
|
236 | 236 | |
|
237 | // TODO: should we take domain from axis (if it has min and max already defined) | |
|
237 | 238 | Domain* domain = m_seriesDomainMap.value(series); |
|
238 | 239 | Q_ASSERT(domain); |
|
239 | 240 |
General Comments 0
You need to be logged in to leave comments.
Login now