@@ -47,7 +47,7 int main(int argc, char *argv[]) | |||||
47 |
|
47 | |||
48 | //! [4] |
|
48 | //! [4] | |
49 | // Enable some features |
|
49 | // Enable some features | |
50 |
series-> |
|
50 | series->setToolTipEnabled(); | |
51 | series->enableFloatingValues(); |
|
51 | series->enableFloatingValues(); | |
52 | //! [4] |
|
52 | //! [4] | |
53 |
|
53 |
@@ -47,7 +47,7 int main(int argc, char *argv[]) | |||||
47 |
|
47 | |||
48 | //! [4] |
|
48 | //! [4] | |
49 | // Enable features |
|
49 | // Enable features | |
50 |
series-> |
|
50 | series->setToolTipEnabled(); | |
51 | series->enableFloatingValues(); |
|
51 | series->enableFloatingValues(); | |
52 | //! [4] |
|
52 | //! [4] | |
53 |
|
53 |
@@ -46,7 +46,7 int main(int argc, char *argv[]) | |||||
46 |
|
46 | |||
47 | //! [4] |
|
47 | //! [4] | |
48 | // Enable features |
|
48 | // Enable features | |
49 |
series-> |
|
49 | series->setToolTipEnabled(); | |
50 | series->enableFloatingValues(); |
|
50 | series->enableFloatingValues(); | |
51 | //! [4] |
|
51 | //! [4] | |
52 |
|
52 |
@@ -36,24 +36,14 void BarChartModel::removeBarSet(QBarSet *set) | |||||
36 | } |
|
36 | } | |
37 | } |
|
37 | } | |
38 |
|
38 | |||
39 |
QBarSet* BarChartModel:: |
|
39 | QBarSet* BarChartModel::setAt(int index) | |
40 | { |
|
40 | { | |
41 | if (getFirst) { |
|
41 | return mDataModel.at(index); | |
42 | mCurrentSet = 0; |
|
|||
43 | } |
|
|||
44 |
|
||||
45 | if ((mDataModel.count() <= 0) || (mDataModel.count() <= mCurrentSet)) { |
|
|||
46 | return 0; |
|
|||
47 | } |
|
|||
48 |
|
||||
49 | QBarSet* set = mDataModel.at(mCurrentSet); |
|
|||
50 | mCurrentSet++; |
|
|||
51 | return set; |
|
|||
52 | } |
|
42 | } | |
53 |
|
43 | |||
54 |
QBarSet* BarChartModel:: |
|
44 | QList<QBarSet*> BarChartModel::barSets() | |
55 | { |
|
45 | { | |
56 |
return mDataModel |
|
46 | return mDataModel; | |
57 | } |
|
47 | } | |
58 |
|
48 | |||
59 | QList<QString> BarChartModel::legend() |
|
49 | QList<QString> BarChartModel::legend() |
@@ -22,8 +22,9 public: | |||||
22 | QBarCategory& category(); |
|
22 | QBarCategory& category(); | |
23 | void addBarSet(QBarSet *set); |
|
23 | void addBarSet(QBarSet *set); | |
24 | void removeBarSet(QBarSet *set); |
|
24 | void removeBarSet(QBarSet *set); | |
25 | QBarSet* nextSet(bool getFirst); |
|
|||
26 | QBarSet *setAt(int index); |
|
25 | QBarSet *setAt(int index); | |
|
26 | QList<QBarSet*> barSets(); | |||
|
27 | ||||
27 | QList<QString> legend(); |
|
28 | QList<QString> legend(); | |
28 |
|
29 | |||
29 | int countSets(); // Number of sets in model |
|
30 | int countSets(); // Number of sets in model |
@@ -52,7 +52,7 void BarPresenter::layoutChanged() | |||||
52 |
|
52 | |||
53 | // TODO: width settable per bar? |
|
53 | // TODO: width settable per bar? | |
54 | bar->resize(mBarDefaultWidth, barHeight); |
|
54 | bar->resize(mBarDefaultWidth, barHeight); | |
55 | bar->setBrush(mSeries->setAt(set)->brush()); |
|
55 | bar->setBrush(mSeries->barsetAt(set)->brush()); | |
56 | bar->setPos(xPos, yPos-barHeight); |
|
56 | bar->setPos(xPos, yPos-barHeight); | |
57 | itemIndex++; |
|
57 | itemIndex++; | |
58 | xPos += mBarDefaultWidth; |
|
58 | xPos += mBarDefaultWidth; |
@@ -70,7 +70,7 void BarPresenterBase::dataChanged() | |||||
70 | // Create new graphic items for bars |
|
70 | // Create new graphic items for bars | |
71 | for (int c=0; c<mSeries->countCategories(); c++) { |
|
71 | for (int c=0; c<mSeries->countCategories(); c++) { | |
72 | for (int s=0; s<mSeries->countSets(); s++) { |
|
72 | for (int s=0; s<mSeries->countSets(); s++) { | |
73 | QBarSet *set = mSeries->setAt(s); |
|
73 | QBarSet *set = mSeries->barsetAt(s); | |
74 | Bar *bar = new Bar(this); |
|
74 | Bar *bar = new Bar(this); | |
75 | childItems().append(bar); |
|
75 | childItems().append(bar); | |
76 | mBars.append(bar); |
|
76 | mBars.append(bar); | |
@@ -102,7 +102,7 void BarPresenterBase::dataChanged() | |||||
102 | // Create floating values |
|
102 | // Create floating values | |
103 | for (int category=0; category<mSeries->countCategories(); category++) { |
|
103 | for (int category=0; category<mSeries->countCategories(); category++) { | |
104 | for (int s=0; s<mSeries->countSets(); s++) { |
|
104 | for (int s=0; s<mSeries->countSets(); s++) { | |
105 | QBarSet *set = mSeries->setAt(s); |
|
105 | QBarSet *set = mSeries->barsetAt(s); | |
106 | BarValue *value = new BarValue(*set, this); |
|
106 | BarValue *value = new BarValue(*set, this); | |
107 | childItems().append(value); |
|
107 | childItems().append(value); | |
108 | mFloatingValues.append(value); |
|
108 | mFloatingValues.append(value); |
@@ -50,7 +50,7 void PercentBarPresenter::layoutChanged() | |||||
50 |
|
50 | |||
51 | // TODO: width settable per bar? |
|
51 | // TODO: width settable per bar? | |
52 | bar->resize(mBarDefaultWidth, barHeight); |
|
52 | bar->resize(mBarDefaultWidth, barHeight); | |
53 | bar->setBrush(mSeries->setAt(set)->brush()); |
|
53 | bar->setBrush(mSeries->barsetAt(set)->brush()); | |
54 | bar->setPos(xPos, yPos-barHeight); |
|
54 | bar->setPos(xPos, yPos-barHeight); | |
55 | itemIndex++; |
|
55 | itemIndex++; | |
56 | yPos -= barHeight; |
|
56 | yPos -= barHeight; |
@@ -17,21 +17,6 QTCOMMERCIALCHART_BEGIN_NAMESPACE | |||||
17 |
|
17 | |||
18 | \mainclass |
|
18 | \mainclass | |
19 |
|
19 | |||
20 | Example on how to create category: |
|
|||
21 | \snippet ../example/barchart/main.cpp 1 |
|
|||
22 |
|
||||
23 | Example on how to create sets of data: |
|
|||
24 | \snippet ../example/barchart/main.cpp 2 |
|
|||
25 |
|
||||
26 | Example on how to add sets to bar chart: |
|
|||
27 | \snippet ../example/barchart/main.cpp 3 |
|
|||
28 |
|
||||
29 | Example on how to enable tooltip and floating values: |
|
|||
30 | \snippet ../example/barchart/main.cpp 4 |
|
|||
31 |
|
||||
32 | Example on how to create view and apply theme: |
|
|||
33 | \snippet ../example/barchart/main.cpp 5 |
|
|||
34 |
|
||||
35 | \sa QBarCategory, QBarSet, QStackedBarSeries, QPercentBarSeries |
|
20 | \sa QBarCategory, QBarSet, QStackedBarSeries, QPercentBarSeries | |
36 | */ |
|
21 | */ | |
37 |
|
22 | |||
@@ -105,22 +90,17 int QBarSeries::countCategories() | |||||
105 | } |
|
90 | } | |
106 |
|
91 | |||
107 | /*! |
|
92 | /*! | |
108 | Simple iterator for set. Returns pointer to next set in series. |
|
93 | Returns a list of sets in series. Keeps ownership of sets. | |
109 | Returns first set, if parameter \a getFirst is true. |
|
94 | */ | |
110 | If series is empty, returns 0. |
|
95 | QList<QBarSet*> QBarSeries::barSets() | |
111 | Returns 0 after last set. |
|
|||
112 | */ |
|
|||
113 | QBarSet* QBarSeries::nextSet(bool getFirst) |
|
|||
114 | { |
|
96 | { | |
115 |
return mModel-> |
|
97 | return mModel->barSets(); | |
116 | } |
|
98 | } | |
117 |
|
99 | |||
118 | /*! |
|
100 | /*! | |
119 | Returns set indexed by \a index. Doesn't check for index bounds. |
|
101 | \internal \a index | |
120 | Assumes that \a index is between 0 and number of sets. Use countSets() to get valid index bound. |
|
|||
121 | \sa countSets() |
|
|||
122 | */ |
|
102 | */ | |
123 | QBarSet* QBarSeries::setAt(int index) |
|
103 | QBarSet* QBarSeries::barsetAt(int index) | |
124 | { |
|
104 | { | |
125 | return mModel->setAt(index); |
|
105 | return mModel->setAt(index); | |
126 | } |
|
106 | } | |
@@ -146,7 +126,7 QString QBarSeries::label(int category) | |||||
146 | Floating values are bar values, that are displayed on top of each bar. |
|
126 | Floating values are bar values, that are displayed on top of each bar. | |
147 | Calling without parameter \a enabled, enables the floating values |
|
127 | Calling without parameter \a enabled, enables the floating values | |
148 | */ |
|
128 | */ | |
149 |
void QBarSeries:: |
|
129 | void QBarSeries::setFloatingValuesEnabled(bool enabled) | |
150 | { |
|
130 | { | |
151 | if (enabled) { |
|
131 | if (enabled) { | |
152 | for (int i=0; i<mModel->countSets(); i++) { |
|
132 | for (int i=0; i<mModel->countSets(); i++) { | |
@@ -166,7 +146,7 void QBarSeries::enableFloatingValues(bool enabled) | |||||
166 | Tooltip shows the name of set, when mouse is hovering on top of bar. |
|
146 | Tooltip shows the name of set, when mouse is hovering on top of bar. | |
167 | Calling without parameter \a enabled, enables the tooltip |
|
147 | Calling without parameter \a enabled, enables the tooltip | |
168 | */ |
|
148 | */ | |
169 |
void QBarSeries:: |
|
149 | void QBarSeries::setToolTipEnabled(bool enabled) | |
170 | { |
|
150 | { | |
171 | if (enabled) { |
|
151 | if (enabled) { | |
172 | for (int i=0; i<mModel->countSets(); i++) { |
|
152 | for (int i=0; i<mModel->countSets(); i++) { | |
@@ -186,7 +166,7 void QBarSeries::enableToolTip(bool enabled) | |||||
186 | Separators are visual elements that are drawn between categories. |
|
166 | Separators are visual elements that are drawn between categories. | |
187 | Calling without parameter \a enabled, enables the separators |
|
167 | Calling without parameter \a enabled, enables the separators | |
188 | */ |
|
168 | */ | |
189 |
void QBarSeries:: |
|
169 | void QBarSeries::setSeparatorsEnabled(bool enabled) | |
190 | { |
|
170 | { | |
191 | emit separatorsEnabled(enabled); |
|
171 | emit separatorsEnabled(enabled); | |
192 | } |
|
172 | } |
@@ -22,8 +22,7 public: | |||||
22 | void removeBarSet(QBarSet *set); // Releases ownership, doesn't delete set |
|
22 | void removeBarSet(QBarSet *set); // Releases ownership, doesn't delete set | |
23 | int countSets(); |
|
23 | int countSets(); | |
24 | int countCategories(); |
|
24 | int countCategories(); | |
25 | QBarSet* nextSet(bool getFirst=false); // Returns first set, if called with true |
|
25 | QList<QBarSet*> barSets(); | |
26 | QBarSet *setAt(int index); |
|
|||
27 |
|
26 | |||
28 | QList<QString> legend(); // Returns legend of series (ie. names of all sets in series) |
|
27 | QList<QString> legend(); // Returns legend of series (ie. names of all sets in series) | |
29 |
|
28 | |||
@@ -31,6 +30,7 public: | |||||
31 | // TODO: Functions below this are not part of api and will be moved |
|
30 | // TODO: Functions below this are not part of api and will be moved | |
32 | // to private implementation, when we start using it |
|
31 | // to private implementation, when we start using it | |
33 | // TODO: TO PIMPL ---> |
|
32 | // TODO: TO PIMPL ---> | |
|
33 | QBarSet *barsetAt(int index); | |||
34 | QString label(int category); |
|
34 | QString label(int category); | |
35 | qreal min(); |
|
35 | qreal min(); | |
36 | qreal max(); |
|
36 | qreal max(); | |
@@ -53,9 +53,9 signals: | |||||
53 | // <--- TO PIMPL |
|
53 | // <--- TO PIMPL | |
54 |
|
54 | |||
55 | public Q_SLOTS: |
|
55 | public Q_SLOTS: | |
56 |
void |
|
56 | void setFloatingValuesEnabled(bool enabled=true); // enables floating values on top of bars | |
57 |
void |
|
57 | void setToolTipEnabled(bool enabled=true); // enables tooltips | |
58 |
void |
|
58 | void setSeparatorsEnabled(bool enabled=true); // enables separators between categories | |
59 |
|
59 | |||
60 | protected: |
|
60 | protected: | |
61 | BarChartModel* mModel; |
|
61 | BarChartModel* mModel; |
@@ -104,7 +104,7 void QBarSet::setValue(int index, qreal value) | |||||
104 | /*! |
|
104 | /*! | |
105 | Sets pen for set. Bars of this set are drawn using \a pen |
|
105 | Sets pen for set. Bars of this set are drawn using \a pen | |
106 | */ |
|
106 | */ | |
107 |
void QBarSet::setPen( |
|
107 | void QBarSet::setPen(QPen pen) | |
108 | { |
|
108 | { | |
109 | mPen = pen; |
|
109 | mPen = pen; | |
110 | } |
|
110 | } | |
@@ -112,7 +112,7 void QBarSet::setPen(const QPen& pen) | |||||
112 | /*! |
|
112 | /*! | |
113 | Returns pen of the set. |
|
113 | Returns pen of the set. | |
114 | */ |
|
114 | */ | |
115 |
|
|
115 | QPen QBarSet::pen() | |
116 | { |
|
116 | { | |
117 | return mPen; |
|
117 | return mPen; | |
118 | } |
|
118 | } | |
@@ -120,7 +120,7 const QPen& QBarSet::pen() const | |||||
120 | /*! |
|
120 | /*! | |
121 | Sets brush for the set. Bars of this set are drawn using \a brush |
|
121 | Sets brush for the set. Bars of this set are drawn using \a brush | |
122 | */ |
|
122 | */ | |
123 |
void QBarSet::setBrush( |
|
123 | void QBarSet::setBrush(QBrush brush) | |
124 | { |
|
124 | { | |
125 | mBrush = brush; |
|
125 | mBrush = brush; | |
126 | } |
|
126 | } | |
@@ -128,7 +128,7 void QBarSet::setBrush(const QBrush& brush) | |||||
128 | /*! |
|
128 | /*! | |
129 | Returns brush of the set. |
|
129 | Returns brush of the set. | |
130 | */ |
|
130 | */ | |
131 |
|
|
131 | QBrush QBarSet::brush() | |
132 | { |
|
132 | { | |
133 | return mBrush; |
|
133 | return mBrush; | |
134 | } |
|
134 | } |
@@ -21,11 +21,11 public: | |||||
21 | qreal valueAt(int index); // for modifying individual values |
|
21 | qreal valueAt(int index); // for modifying individual values | |
22 | void setValue(int index, qreal value); // setter for individual value |
|
22 | void setValue(int index, qreal value); // setter for individual value | |
23 |
|
23 | |||
24 |
void setPen( |
|
24 | void setPen(QPen pen); | |
25 |
|
|
25 | QPen pen(); | |
26 |
|
26 | |||
27 |
void setBrush( |
|
27 | void setBrush(QBrush brush); | |
28 |
|
|
28 | QBrush brush(); | |
29 |
|
29 | |||
30 | Q_SIGNALS: |
|
30 | Q_SIGNALS: | |
31 | void clicked(); // Clicked and hover signals exposed to user |
|
31 | void clicked(); // Clicked and hover signals exposed to user |
@@ -55,7 +55,7 void StackedBarPresenter::layoutChanged() | |||||
55 | Bar* bar = mBars.at(itemIndex); |
|
55 | Bar* bar = mBars.at(itemIndex); | |
56 |
|
56 | |||
57 | bar->resize(mBarDefaultWidth, barHeight); |
|
57 | bar->resize(mBarDefaultWidth, barHeight); | |
58 | bar->setBrush(mSeries->setAt(set)->brush()); |
|
58 | bar->setBrush(mSeries->barsetAt(set)->brush()); | |
59 | bar->setPos(xPos, yPos-barHeight); |
|
59 | bar->setPos(xPos, yPos-barHeight); | |
60 | itemIndex++; |
|
60 | itemIndex++; | |
61 | yPos -= barHeight; |
|
61 | yPos -= barHeight; |
@@ -143,22 +143,25 void ChartTheme::decorate(LineChartItem* item, QLineSeries* series,int count) | |||||
143 |
|
143 | |||
144 | void ChartTheme::decorate(BarPresenter* item, QBarSeries* series,int count) |
|
144 | void ChartTheme::decorate(BarPresenter* item, QBarSeries* series,int count) | |
145 | { |
|
145 | { | |
|
146 | QList<QBarSet*> sets = series->barSets(); | |||
146 | for (int i=0; i<series->countSets(); i++) { |
|
147 | for (int i=0; i<series->countSets(); i++) { | |
147 |
se |
|
148 | sets.at(i)->setBrush(QBrush(m_seriesColor.at(i%m_seriesColor.count()))); | |
148 | } |
|
149 | } | |
149 | } |
|
150 | } | |
150 |
|
151 | |||
151 | void ChartTheme::decorate(StackedBarPresenter* item, QStackedBarSeries* series,int count) |
|
152 | void ChartTheme::decorate(StackedBarPresenter* item, QStackedBarSeries* series,int count) | |
152 | { |
|
153 | { | |
|
154 | QList<QBarSet*> sets = series->barSets(); | |||
153 | for (int i=0; i<series->countSets(); i++) { |
|
155 | for (int i=0; i<series->countSets(); i++) { | |
154 |
se |
|
156 | sets.at(i)->setBrush(QBrush(m_seriesColor.at(i%m_seriesColor.count()))); | |
155 | } |
|
157 | } | |
156 | } |
|
158 | } | |
157 |
|
159 | |||
158 | void ChartTheme::decorate(PercentBarPresenter* item, QPercentBarSeries* series,int count) |
|
160 | void ChartTheme::decorate(PercentBarPresenter* item, QPercentBarSeries* series,int count) | |
159 | { |
|
161 | { | |
|
162 | QList<QBarSet*> sets = series->barSets(); | |||
160 | for (int i=0; i<series->countSets(); i++) { |
|
163 | for (int i=0; i<series->countSets(); i++) { | |
161 |
se |
|
164 | sets.at(i)->setBrush(QBrush(m_seriesColor.at(i%m_seriesColor.count()))); | |
162 | } |
|
165 | } | |
163 | } |
|
166 | } | |
164 |
|
167 |
@@ -272,7 +272,7 void MainWidget::addSeries(QString seriesName, int columnCount, int rowCount, QS | |||||
272 | series->addBarSet(set); |
|
272 | series->addBarSet(set); | |
273 | } |
|
273 | } | |
274 | series->enableFloatingValues(); |
|
274 | series->enableFloatingValues(); | |
275 |
series-> |
|
275 | series->setToolTipEnabled(); | |
276 | series->enableSeparators(false); |
|
276 | series->enableSeparators(false); | |
277 | m_chartWidget->addSeries(series); |
|
277 | m_chartWidget->addSeries(series); | |
278 | setCurrentSeries(series); |
|
278 | setCurrentSeries(series); |
General Comments 0
You need to be logged in to leave comments.
Login now