##// END OF EJS Templates
Documentation...
Mika Salmela -
r2517:26c3b5c0ed1d
parent child
Show More
@@ -0,0 +1,38
1 /*!
2 \example examples/boxplotchart
3 \title Box and Whiskers Example
4 \subtitle
5
6 The example shows how to create a box-and-whiskers chart.
7
8 \image examples_barchart.png
9
10 Introduction here
11
12 \snippet ../examples/barchart/main.cpp 1
13
14 Ykk�skohta
15
16 \snippet ../examples/barchart/main.cpp 2
17
18 Kakkoskohta
19
20 \snippet ../examples/barchart/main.cpp 3
21
22 Kolmoskohta
23
24 \snippet ../examples/barchart/main.cpp 4
25
26 Neloskohta
27
28 \snippet ../examples/barchart/main.cpp 5
29
30 Tarkista numerointi. Finally we add the chart onto a view. We also turn on the antialiasing for the chartView.
31
32 \snippet ../examples/barchart/main.cpp 6
33
34 Tarkista numerointi. Chart is ready to be shown. We set the chart to be central widget of the window.
35 We also set the size for the chart window and show it.
36
37 \snippet ../examples/barchart/main.cpp 7
38 */
@@ -58,7 +58,7 QTCOMMERCIALCHART_BEGIN_NAMESPACE
58
58
59 /*!
59 /*!
60 \property QVBarModelMapper::series
60 \property QVBarModelMapper::series
61 \brief Defines the QPieSeries object that is used by the mapper.
61 \brief Defines the QBarSeries object that is used by the mapper.
62
62
63 All the data in the series is discarded when it is set to the mapper.
63 All the data in the series is discarded when it is set to the mapper.
64 When new series is specified the old series is disconnected (it preserves its data)
64 When new series is specified the old series is disconnected (it preserves its data)
@@ -82,22 +82,26 void BoxPlotChartItem::handleDataStructureChanged()
82 for (int s = 0; s < setCount; s++) {
82 for (int s = 0; s < setCount; s++) {
83 QBoxSet *set = m_series->d_func()->boxsetAt(s);
83 QBoxSet *set = m_series->d_func()->boxsetAt(s);
84
84
85 BoxWhiskers *boxWhiskersItem = m_boxTable.value(set);
85 BoxWhiskers *box = m_boxTable.value(set);
86 if (boxWhiskersItem == 0) {
86 if (!box) {
87 // Item is not yet created, make a box and add it to hash table
87 // Item is not yet created, make a box and add it to hash table
88 boxWhiskersItem = new BoxWhiskers(domain(), this);
88 box = new BoxWhiskers(set, domain(), this);
89 m_boxTable.insert(set, boxWhiskersItem);
89 m_boxTable.insert(set, box);
90 connect(box, SIGNAL(clicked(QBoxSet *)), m_series, SIGNAL(clicked(QBoxSet*)));
91 connect(box, SIGNAL(hovered(bool,QBoxSet*)), m_series, SIGNAL(hovered(bool,QBoxSet*)));
92 connect(box, SIGNAL(clicked(QBoxSet*)), set, SIGNAL(clicked()));
93 connect(box, SIGNAL(hovered(bool,QBoxSet*)), set, SIGNAL(hovered(bool)));
90
94
91 // Set the decorative issues for the newly created box
95 // Set the decorative issues for the newly created box
92 boxWhiskersItem->setBrush(m_series->brush());
96 box->setBrush(m_series->brush());
93 boxWhiskersItem->setPen(m_series->pen());
97 box->setPen(m_series->pen());
94 }
98 }
95 updateBoxGeometry(boxWhiskersItem, s);
99 updateBoxGeometry(box, s);
96
100
97 boxWhiskersItem->updateGeometry();
101 box->updateGeometry();
98
102
99 if (m_animation)
103 if (m_animation)
100 m_animation->addBox(boxWhiskersItem);
104 m_animation->addBox(box);
101 }
105 }
102
106
103 //
107 //
@@ -20,42 +20,41
20
20
21 #include "boxwhiskers_p.h"
21 #include "boxwhiskers_p.h"
22 #include <QPainter>
22 #include <QPainter>
23 #include <QDebug>
24 #include <QWidget>
23 #include <QWidget>
25
24
25 #include <QDebug>
26
26 QTCOMMERCIALCHART_BEGIN_NAMESPACE
27 QTCOMMERCIALCHART_BEGIN_NAMESPACE
27
28
28 BoxWhiskers::BoxWhiskers(AbstractDomain *domain, QGraphicsObject *parent) :
29 BoxWhiskers::BoxWhiskers(QBoxSet *set, AbstractDomain *domain, QGraphicsObject *parent) :
29 QGraphicsObject(parent),
30 QGraphicsObject(parent),
31 m_boxSet(set),
30 m_domain(domain)
32 m_domain(domain)
31 {
33 {
32 //qDebug() << "BoxWhiskers::BoxWhiskers()";
34 setAcceptHoverEvents(true);
35 setAcceptedMouseButtons(Qt::MouseButtonMask);
33 }
36 }
34
37
35 BoxWhiskers::~BoxWhiskers()
38 BoxWhiskers::~BoxWhiskers()
36 {
39 {
37 //qDebug() << "BoxWhiskers::~BoxWhiskers()";
38 }
40 }
39
41
40 void BoxWhiskers::mousePressEvent(QGraphicsSceneMouseEvent *event)
42 void BoxWhiskers::mousePressEvent(QGraphicsSceneMouseEvent *event)
41 {
43 {
42 Q_UNUSED(event)
44 Q_UNUSED(event)
43
45 emit clicked(m_boxSet);
44 qDebug() << "BoxWhiskers::mousePressEvent";
45 }
46 }
46
47
47 void BoxWhiskers::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
48 void BoxWhiskers::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
48 {
49 {
49 Q_UNUSED(event)
50 Q_UNUSED(event)
50
51 emit hovered(true, m_boxSet);
51 qDebug() << "BoxWhiskers::hoverEnterEvent";
52 }
52 }
53
53
54 void BoxWhiskers::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
54 void BoxWhiskers::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
55 {
55 {
56 Q_UNUSED(event)
56 Q_UNUSED(event)
57
57 emit hovered(false, m_boxSet);
58 qDebug() << "BoxWhiskers::hoverLeaveEvent";
59 }
58 }
60
59
61 void BoxWhiskers::setBrush(const QBrush &brush)
60 void BoxWhiskers::setBrush(const QBrush &brush)
@@ -32,8 +32,8
32
32
33 #include "boxwhiskersdata_p.h"
33 #include "boxwhiskersdata_p.h"
34 #include "qchartglobal.h"
34 #include "qchartglobal.h"
35 #include "qbarset.h"
36 #include "abstractdomain_p.h"
35 #include "abstractdomain_p.h"
36 #include <QBoxSet>
37 #include <QGraphicsRectItem>
37 #include <QGraphicsRectItem>
38 #include <QGraphicsLineItem>
38 #include <QGraphicsLineItem>
39 #include <QGraphicsLayoutItem>
39 #include <QGraphicsLayoutItem>
@@ -48,7 +48,7 class BoxWhiskers : public QGraphicsObject/*, public QGraphicsLayoutItem*/
48 Q_OBJECT
48 Q_OBJECT
49 //Q_INTERFACES(QGraphicsLayoutItem)
49 //Q_INTERFACES(QGraphicsLayoutItem)
50 public:
50 public:
51 BoxWhiskers(AbstractDomain *domain, QGraphicsObject *parent);
51 BoxWhiskers(QBoxSet *set, AbstractDomain *domain, QGraphicsObject *parent);
52 ~BoxWhiskers();
52 ~BoxWhiskers();
53
53
54 void setBrush(const QBrush &brush);
54 void setBrush(const QBrush &brush);
@@ -73,13 +73,14 private:
73 void updateBoundingRect();
73 void updateBoundingRect();
74
74
75 Q_SIGNALS:
75 Q_SIGNALS:
76 void clicked(int index, QBarSet *barset);
76 void clicked(QBoxSet *boxset);
77 void hovered(bool status, QBarSet *barset);
77 void hovered(bool status, QBoxSet *boxset);
78
78
79 private:
79 private:
80 friend class BoxPlotChartItem;
80 friend class BoxPlotChartItem;
81 friend class BoxPlotAnimation;
81 friend class BoxPlotAnimation;
82
82
83 QBoxSet *m_boxSet;
83 AbstractDomain *m_domain;
84 AbstractDomain *m_domain;
84 QPainterPath m_boxPath;
85 QPainterPath m_boxPath;
85 QRectF m_boundingRect;
86 QRectF m_boundingRect;
@@ -38,25 +38,25 QTCOMMERCIALCHART_BEGIN_NAMESPACE
38
38
39 /*!
39 /*!
40 \class QBoxPlotSeries
40 \class QBoxPlotSeries
41 \brief Series for creating stacked bar chart
41 \brief Series for creating box-and-whiskers chart
42 \mainclass
42 \mainclass
43
43
44 QBoxPlotSeries represents a series of data shown as bars. The purpose of this class is to draw bars
44 QBoxPlotSeries represents a series of data shown as box-and-whisker bars. The purpose of this class is to act as
45 as stacks, where bars in same category are stacked on top of each other.
45 a container for single box-and-whisker items. Each item is drawn to own slot. If chart includes multiple QBoxPlotSeries
46 QBoxPlotSeries groups the data from sets to categories, which are defined by QStringList.
46 items with the same index are drawn to same slot.
47
47
48 See the \l {BoxPlotChart Example} {stacked bar chart example} to learn how to create a stacked bar chart.
48 See the \l {Box and Whiskers Example} {box-and-whiskers chart example} to learn how to create a box-and-whiskers chart.
49 \image examples_boxplotchart.png
49 \image examples_boxplotchart.png
50
50
51 \sa QBoxSet, QPercentBarSeries, QAbstractBarSeries
51 \sa QBoxSet
52 */
52 */
53
53
54 /*!
54 /*!
55 \qmlclass BoxPlotSeries QBoxPlotSeries
55 \qmlclass BoxPlotSeries QBoxPlotSeries
56 \inherits AbstractBarSeries
56 \inherits AbstractBarSeries
57
57
58 The following QML shows how to create a simple stacked bar chart:
58 The following QML shows how to create a simple box-and-whiskers chart:
59 \snippet ../demos/qmlchart/qml/qmlchart/View7.qml 1
59 \snippet ../examples/qmlboxplot/qml/qmlboxplot/main.qml 1
60 \beginfloatleft
60 \beginfloatleft
61 \image demos_qmlchart7.png
61 \image demos_qmlchart7.png
62 \endfloat
62 \endfloat
@@ -64,6 +64,31 QTCOMMERCIALCHART_BEGIN_NAMESPACE
64 */
64 */
65
65
66 /*!
66 /*!
67 \fn QBoxPlotSeries::boxsetsAdded(QList<QBoxSet *> sets)
68 \brief Signal is emitted when a new \a sets of box-and-whiskers data is added to the series.
69 */
70
71 /*!
72 \fn QBoxPlotSeries::boxsetsRemoved(QList<QBoxSet *> sets)
73 \brief Signal is emitted when \a sets of box-and-whiskers data is removed from the series.
74 */
75
76 /*!
77 \fn QBoxPlotSeries::clicked(QBoxSet *boxset)
78 \brief Signal is emitted when the user clicks the \a boxset on the chart.
79 */
80
81 /*!
82 \fn QBoxPlotSeries::hovered(bool status, QBoxSet *boxset)
83 \brief Signal is emitted when there is change in hover \a status over \a boxset.
84 */
85
86 /*!
87 \fn QBoxPlotSeries::countChanged()
88 \brief Signal is emitted when there is change in count of box-and-whiskers items in the series.
89 */
90
91 /*!
67 Constructs empty QBoxPlotSeries.
92 Constructs empty QBoxPlotSeries.
68 QBoxPlotSeries is QObject which is a child of a \a parent.
93 QBoxPlotSeries is QObject which is a child of a \a parent.
69 */
94 */
@@ -85,7 +110,7 QBoxPlotSeries::~QBoxPlotSeries()
85 }
110 }
86
111
87 /*!
112 /*!
88 Adds a single box and whiskers item to series. Takes ownership of \a the box. If the box is null or is already in series, it won't be appended.
113 Adds a single box and whiskers set to series. Takes ownership of the \a set. If the set is null or is already in series, it won't be appended.
89 Returns true, if appending succeeded.
114 Returns true, if appending succeeded.
90 */
115 */
91 bool QBoxPlotSeries::append(QBoxSet *set)
116 bool QBoxPlotSeries::append(QBoxSet *set)
@@ -223,6 +248,9 QAbstractSeries::SeriesType QBoxPlotSeries::type() const
223 return QAbstractSeries::SeriesTypeBoxPlot;
248 return QAbstractSeries::SeriesTypeBoxPlot;
224 }
249 }
225
250
251 /*!
252 Sets brush for the series. Box-and-whiskers items are drawn using \a brush
253 */
226 void QBoxPlotSeries::setBrush(const QBrush &brush)
254 void QBoxPlotSeries::setBrush(const QBrush &brush)
227 {
255 {
228 Q_D(QBoxPlotSeries);
256 Q_D(QBoxPlotSeries);
@@ -233,6 +261,9 void QBoxPlotSeries::setBrush(const QBrush &brush)
233 }
261 }
234 }
262 }
235
263
264 /*!
265 Returns brush of the series.
266 */
236 QBrush QBoxPlotSeries::brush() const
267 QBrush QBoxPlotSeries::brush() const
237 {
268 {
238 Q_D(const QBoxPlotSeries);
269 Q_D(const QBoxPlotSeries);
@@ -240,6 +271,9 QBrush QBoxPlotSeries::brush() const
240 return d->m_brush;
271 return d->m_brush;
241 }
272 }
242
273
274 /*!
275 Sets pen for the series. Box-and-whiskers items are drawn using \a pen
276 */
243 void QBoxPlotSeries::setPen(const QPen &pen)
277 void QBoxPlotSeries::setPen(const QPen &pen)
244 {
278 {
245 Q_D(QBoxPlotSeries);
279 Q_D(QBoxPlotSeries);
@@ -250,6 +284,9 void QBoxPlotSeries::setPen(const QPen &pen)
250 }
284 }
251 }
285 }
252
286
287 /*!
288 Returns the pen of this series.
289 */
253 QPen QBoxPlotSeries::pen() const
290 QPen QBoxPlotSeries::pen() const
254 {
291 {
255 Q_D(const QBoxPlotSeries);
292 Q_D(const QBoxPlotSeries);
@@ -23,13 +23,11
23
23
24 #include <qchartglobal.h>
24 #include <qchartglobal.h>
25 #include <qboxset.h>
25 #include <qboxset.h>
26 //#include <qabstractbarseries.h>
27 #include <qabstractseries.h>
26 #include <qabstractseries.h>
28
27
29 QTCOMMERCIALCHART_BEGIN_NAMESPACE
28 QTCOMMERCIALCHART_BEGIN_NAMESPACE
30
29
31 class QBoxPlotSeriesPrivate;
30 class QBoxPlotSeriesPrivate;
32 //class QBarSet;
33
31
34 class QTCOMMERCIALCHART_EXPORT QBoxPlotSeries : public QAbstractSeries
32 class QTCOMMERCIALCHART_EXPORT QBoxPlotSeries : public QAbstractSeries
35 {
33 {
@@ -47,9 +45,6 public:
47 QList<QBoxSet *> boxSets() const;
45 QList<QBoxSet *> boxSets() const;
48 void clear();
46 void clear();
49
47
50 void setLabelsVisible(bool visible = true);
51 bool isLabelsVisible() const;
52
53 QAbstractSeries::SeriesType type() const;
48 QAbstractSeries::SeriesType type() const;
54
49
55 void setBrush(const QBrush &brush);
50 void setBrush(const QBrush &brush);
@@ -58,10 +53,9 public:
58 QPen pen() const;
53 QPen pen() const;
59
54
60 Q_SIGNALS:
55 Q_SIGNALS:
61 void clicked(int index, QBoxSet *boxset);
56 void clicked(QBoxSet *boxset);
62 void hovered(bool status, QBoxSet *boxset);
57 void hovered(bool status, QBoxSet *boxset);
63 void countChanged();
58 void countChanged();
64 void labelsVisibleChanged();
65
59
66 void boxsetsAdded(QList<QBoxSet *> sets);
60 void boxsetsAdded(QList<QBoxSet *> sets);
67 void boxsetsRemoved(QList<QBoxSet *> sets);
61 void boxsetsRemoved(QList<QBoxSet *> sets);
@@ -27,7 +27,101
27 QTCOMMERCIALCHART_BEGIN_NAMESPACE
27 QTCOMMERCIALCHART_BEGIN_NAMESPACE
28
28
29 /*!
29 /*!
30 Constructs QBoxSet with parent of \a parent
30 \class QBoxSet
31 \brief Building block for box-and-whiskers chart
32
33 QBoxSet represents one box-and-whiskers item. It takes fives values to create a graphical representation
34 of range and three medians. There's two type of methods to give the values. The first one is with constructor
35 or append type of methods (append and operator <<). In these the values have to be given in order lower extreme,
36 lower quartile, median, upper quartile and upper extre. Second method is to create an empty QBoxSet instance and
37 give the values using own methods.
38
39 \mainclass
40
41 \sa QBoxPlotSeries
42 */
43 /*!
44 \qmlclass BoxSet QBoxSet
45
46 BoxSet represents one box-and-whiskers item. It takes fives values to create a graphical representation
47 of range and three medians. There's two type of methods to give the values. The first one is with constructor
48 or append type of methods (append and operator <<). In these the values have to be given in order lower extreme,
49 lower quartile, median, upper quartile and upper extre. Second method is to create an empty BoxSet instance and
50 give the values using own methods.
51 \sa BoxPlotSeries
52 */
53
54 /*!
55 \property QBoxSet::pen
56 \brief Defines the pen used by the box-and-whiskers set.
57 */
58
59 /*!
60 \property QBoxSet::brush
61 \brief Defines the brush used by the box-and-whiskers set.
62 */
63
64 /*!
65 \property QBoxSet::color
66 The fill (brush) color of the box-and-whiskers set.
67 */
68
69 /*!
70 \property QBoxSet::borderColor
71 The line (pen) color of the box-and-whiskers set.
72 */
73
74 /*!
75 \fn void QBoxSet::clicked()
76 The signal is emitted if the user clicks with a mouse on top of box-and-whisker item.
77 */
78
79 /*!
80 \fn void QBoxSet::hovered(bool status)
81
82 The signal is emitted if mouse is hovered on top of box-and-whisker item.
83 Parameter \a status is true, if mouse entered on top of item, false if mouse left from top of item.
84 */
85
86 /*!
87 \fn void QBoxSet::penChanged()
88 This signal is emitted when the pen of the box-and-whisker item has changed.
89 \sa pen
90 */
91
92 /*!
93 \fn void QBoxSet::brushChanged()
94 This signal is emitted when the brush of the box-and-whisker item has changed.
95 \sa brush
96 */
97
98 /*!
99 \fn void QBoxSet::colorChanged(QColor)
100 This signal is emitted when the fill (brush) color of the box-and-whisker item has changed to \a color.
101 */
102
103 /*!
104 \fn void QBoxSet::valuesAdded(int index, int count)
105 This signal is emitted when new values have been added to the box-and-whisker item.
106 Parameter \a index indicates the position of the first inserted value.
107 Parameter \a count is the number of inserted values.
108 \sa append(), insert()
109 */
110
111 /*!
112 \fn void QBoxSet::valueChanged(int index)
113 This signal is emitted values the value in the box-and-whisker item has been modified.
114 Parameter \a index indicates the position of the modified value.
115 \sa at()
116 */
117
118 /*!
119 \fn void QBoxSet::borderColorChanged(QColor)
120 This signal is emitted when the line (pen) color of the box-and-whisker item has changed to \a color.
121 */
122
123 /*!
124 Constructs QBoxSet with optional \a label and parent of \a parent
31 */
125 */
32 QBoxSet::QBoxSet(const QString label, QObject *parent)
126 QBoxSet::QBoxSet(const QString label, QObject *parent)
33 : QObject(parent),
127 : QObject(parent),
@@ -35,15 +129,19 QBoxSet::QBoxSet(const QString label, QObject *parent)
35 {
129 {
36 }
130 }
37
131
38 QBoxSet::QBoxSet(qreal value1, qreal value2, qreal value3, qreal value4, qreal value5, const QString label, QObject *parent)
132 /*!
133 Constructs QBoxSet with given ordered values. \a le for lower extreme, \a lq for lower quartile, \a m for median,
134 \a uq for upper quartile and \a ue for upper quartile. \a label and \a parent are optional.
135 */
136 QBoxSet::QBoxSet(const qreal le, const qreal lq, const qreal m, const qreal uq, const qreal ue, const QString label = "", QObject *parent)
39 : QObject(parent),
137 : QObject(parent),
40 d_ptr(new QBoxSetPrivate(label, this))
138 d_ptr(new QBoxSetPrivate(label, this))
41 {
139 {
42 d_ptr->append(value1);
140 d_ptr->append(le);
43 d_ptr->append(value2);
141 d_ptr->append(lq);
44 d_ptr->append(value3);
142 d_ptr->append(m);
45 d_ptr->append(value4);
143 d_ptr->append(uq);
46 d_ptr->append(value5);
144 d_ptr->append(ue);
47 }
145 }
48
146
49 /*!
147 /*!
@@ -39,7 +39,7 class QTCOMMERCIALCHART_EXPORT QBoxSet : public QObject
39
39
40 public:
40 public:
41 explicit QBoxSet(const QString label = "", QObject *parent = 0);
41 explicit QBoxSet(const QString label = "", QObject *parent = 0);
42 explicit QBoxSet(const qreal value1, const qreal value2, const qreal value3, const qreal value4, const qreal value5, const QString label = "", QObject *parent = 0);
42 explicit QBoxSet(const qreal le, const qreal lq, const qreal m, const qreal uq, const qreal ue, const QString label = "", QObject *parent = 0);
43 virtual ~QBoxSet();
43 virtual ~QBoxSet();
44
44
45 void append(const qreal value);
45 void append(const qreal value);
@@ -62,7 +62,6 public:
62 QBoxSet &operator << (const qreal &value);
62 QBoxSet &operator << (const qreal &value);
63
63
64 void insert(const int index, const qreal value);
64 void insert(const int index, const qreal value);
65 void remove(const int index, const int count = 1);
66 void replace(const int index, const qreal value);
65 void replace(const int index, const qreal value);
67 qreal at(const int index) const;
66 qreal at(const int index) const;
68 qreal operator [](const int index) const;
67 qreal operator [](const int index) const;
@@ -82,7 +81,7 public:
82
81
83
82
84 Q_SIGNALS:
83 Q_SIGNALS:
85 void clicked(int index);
84 void clicked();
86 void hovered(bool status);
85 void hovered(bool status);
87 void penChanged();
86 void penChanged();
88 void brushChanged();
87 void brushChanged();
@@ -90,7 +89,6 Q_SIGNALS:
90 void borderColorChanged(QColor color);
89 void borderColorChanged(QColor color);
91
90
92 void valuesAdded(int index, int count);
91 void valuesAdded(int index, int count);
93 void valuesRemoved(int index, int count);
94 void valueChanged(int index);
92 void valueChanged(int index);
95
93
96 private:
94 private:
@@ -28,21 +28,21 QTCOMMERCIALCHART_BEGIN_NAMESPACE
28 \mainclass
28 \mainclass
29
29
30 Model mappers allow you to use QAbstractItemModel derived models as a data source for a chart series.
30 Model mappers allow you to use QAbstractItemModel derived models as a data source for a chart series.
31 Vertical model mapper is used to create a connection between QAbstractBarSeries and QAbstractItemModel derived model object.
31 Vertical model mapper is used to create a connection between QBoxPlotSeries and QAbstractItemModel derived model object.
32 Model mapper maintains equal size of all the BarSets.
32 Model mapper maintains equal size of all the BarSets.
33 Adding/removing value from the BarSet causes the the same change in the rest of the BarSets added to the same series.
34 Note: used model has to support adding/removing rows/columns and modifying the data of the cells.
33 Note: used model has to support adding/removing rows/columns and modifying the data of the cells.
35 */
34 */
36 /*!
35 /*!
37 \qmlclass VBarModelMapper
36 \qmlclass VBoxPlotModelMapper
38 \mainclass
37 \mainclass
39
38
40 VBarModelMapper allows you to use your own QAbstractItemModel derived model with data in columns as a data source
39 VBoxPlotModelMapper allows you to use your own QAbstractItemModel derived model with data in columns as a data source
41 for any bar series. It is possible to use both QAbstractItemModel and bar series data API to manipulate data.
40 for any box-and-whiskers series. It is possible to use both QAbstractItemModel and box-and-whiskers series data API to
42 VBarModelMapper keeps the series and the model in sync.
41 manipulate data.
42 VBoxPlotModelMapper keeps the series and the model in sync.
43
43
44 The following QML example would create a bar series with three bar sets (assuming the
44 The following QML example would create a box-and-whiskers series with three box sets (assuming the
45 model has at least four columns). Each bar set would contain data starting from row 1. The name of a set would be
45 model has at least four columns). Each box set would contain data starting from row 1. The name of a set would be
46 defined by the horizontal header (of the column).
46 defined by the horizontal header (of the column).
47 \code
47 \code
48 BarSeries {
48 BarSeries {
@@ -58,7 +58,7 QTCOMMERCIALCHART_BEGIN_NAMESPACE
58
58
59 /*!
59 /*!
60 \property QVBoxPlotModelMapper::series
60 \property QVBoxPlotModelMapper::series
61 \brief Defines the QPieSeries object that is used by the mapper.
61 \brief Defines the QBoxPlotSeries object that is used by the mapper.
62
62
63 All the data in the series is discarded when it is set to the mapper.
63 All the data in the series is discarded when it is set to the mapper.
64 When new series is specified the old series is disconnected (it preserves its data)
64 When new series is specified the old series is disconnected (it preserves its data)
@@ -81,46 +81,46 QTCOMMERCIALCHART_BEGIN_NAMESPACE
81 */
81 */
82
82
83 /*!
83 /*!
84 \property QVBoxPlotModelMapper::firstBarSetColumn
84 \property QVBoxPlotModelMapper::firstBoxSetColumn
85 \brief Defines which column of the model is used as the data source for the first bar set
85 \brief Defines which column of the model is used as the data source for the first box-and-whiskers set
86 Default value is: -1 (invalid mapping)
86 Default value is: -1 (invalid mapping)
87 */
87 */
88 /*!
88 /*!
89 \qmlproperty int VBarModelMapper::firstBarSetColumn
89 \qmlproperty int VBarModelMapper::firstBoxSetColumn
90 Defines which column of the model is used as the data source for the first bar set. Default value
90 Defines which column of the model is used as the data source for the first box-and-whiskers set. Default value
91 is: -1 (invalid mapping).
91 is: -1 (invalid mapping).
92 */
92 */
93
93
94 /*!
94 /*!
95 \property QVBoxPlotModelMapper::lastBarSetColumn
95 \property QVBoxPlotModelMapper::lastBoxSetColumn
96 \brief Defines which column of the model is used as the data source for the last bar set
96 \brief Defines which column of the model is used as the data source for the last box-and-whiskers set
97 Default value is: -1 (invalid mapping)
97 Default value is: -1 (invalid mapping)
98 */
98 */
99 /*!
99 /*!
100 \qmlproperty int VBarModelMapper::lastBarSetColumn
100 \qmlproperty int VBarModelMapper::lastBoxSetColumn
101 Defines which column of the model is used as the data source for the last bar set. Default
101 Defines which column of the model is used as the data source for the last box-and-whiskers set. Default
102 value is: -1 (invalid mapping).
102 value is: -1 (invalid mapping).
103 */
103 */
104
104
105 /*!
105 /*!
106 \property QVBoxPlotModelMapper::firstRow
106 \property QVBoxPlotModelMapper::firstRow
107 \brief Defines which row of the model contains the first values of the QBarSets in the series.
107 \brief Defines which row of the model contains the first values of the QBoxSets in the series.
108 Minimal and default value is: 0
108 Minimal and default value is: 0
109 */
109 */
110 /*!
110 /*!
111 \qmlproperty int VBarModelMapper::firstRow
111 \qmlproperty int VBoxPlotModelMapper::firstRow
112 Defines which row of the model contains the first values of the QBarSets in the series.
112 Defines which row of the model contains the first values of the QBoxSets in the series.
113 The default value is 0.
113 The default value is 0.
114 */
114 */
115
115
116 /*!
116 /*!
117 \property QVBoxPlotModelMapper::rowCount
117 \property QVBoxPlotModelMapper::rowCount
118 \brief Defines the number of rows of the model that are mapped as the data for QAbstractBarSeries
118 \brief Defines the number of rows of the model that are mapped as the data for QBoxPlotSeries
119 Minimal and default value is: -1 (count limited by the number of rows in the model)
119 Minimal and default value is: -1 (count limited by the number of rows in the model)
120 */
120 */
121 /*!
121 /*!
122 \qmlproperty int VBarModelMapper::rowCount
122 \qmlproperty int VBoxModelMapper::rowCount
123 Defines the number of rows of the model that are mapped as the data for QAbstractBarSeries. The default value is
123 Defines the number of rows of the model that are mapped as the data for QBoxPlotSeries. The default value is
124 -1 (count limited by the number of rows in the model)
124 -1 (count limited by the number of rows in the model)
125 */
125 */
126
126
@@ -137,13 +137,13 QTCOMMERCIALCHART_BEGIN_NAMESPACE
137 */
137 */
138
138
139 /*!
139 /*!
140 \fn void QVBoxPlotModelMapper::firstBarSetColumnChanged()
140 \fn void QVBoxPlotModelMapper::firstBoxSetColumnChanged()
141 Emitted when the firstBarSetColumn has changed.
141 Emitted when the firstBoxSetColumn has changed.
142 */
142 */
143
143
144 /*!
144 /*!
145 \fn void QVBoxPlotModelMapper::lastBarSetColumnChanged()
145 \fn void QVBoxPlotModelMapper::lastBoxSetColumnChanged()
146 Emitted when the lastBarSetColumn has changed.
146 Emitted when the lastBoxSetColumn has changed.
147 */
147 */
148
148
149 /*!
149 /*!
@@ -53,6 +53,7 QTCOMMERCIALCHART_BEGIN_NAMESPACE
53 \value LegendMarkerTypeBar
53 \value LegendMarkerTypeBar
54 \value LegendMarkerTypePie
54 \value LegendMarkerTypePie
55 \value LegendMarkerTypeXY
55 \value LegendMarkerTypeXY
56 \value LegendMarkerTypeBoxPlot
56 */
57 */
57
58
58 /*!
59 /*!
@@ -62,6 +62,7 QTCOMMERCIALCHART_BEGIN_NAMESPACE
62 \value SeriesTypeHorizontalBar
62 \value SeriesTypeHorizontalBar
63 \value SeriesTypeHorizontalStackedBar
63 \value SeriesTypeHorizontalStackedBar
64 \value SeriesTypeHorizontalPercentBar
64 \value SeriesTypeHorizontalPercentBar
65 \value SeriesTypeBoxPlot
65 */
66 */
66
67
67 /*!
68 /*!
@@ -206,6 +206,11 void MainWidget::addSeries()
206 m_series[nSeries]->append(set5);
206 m_series[nSeries]->append(set5);
207 m_series[nSeries]->setName("Box & Whiskers");
207 m_series[nSeries]->setName("Box & Whiskers");
208
208
209 connect(m_series[nSeries], SIGNAL(clicked(QBoxSet*)), this, SLOT(boxClicked(QBoxSet*)));
210 connect(m_series[nSeries], SIGNAL(hovered(bool, QBoxSet*)), this, SLOT(boxHovered(bool, QBoxSet*)));
211 connect(set1, SIGNAL(clicked()), this, SLOT(singleBoxClicked()));
212 connect(set2, SIGNAL(hovered(bool)), this, SLOT(singleBoxHovered(bool)));
213
209 m_chart->addSeries(m_series[nSeries]);
214 m_chart->addSeries(m_series[nSeries]);
210
215
211 if (nSeries == 0) {
216 if (nSeries == 0) {
@@ -356,3 +361,29 void MainWidget::changeChartTheme(int themeIndex)
356 else
361 else
357 m_chart->setTheme((QChart::ChartTheme) (themeIndex - 1));
362 m_chart->setTheme((QChart::ChartTheme) (themeIndex - 1));
358 }
363 }
364
365 void MainWidget::boxClicked(QBoxSet *set)
366 {
367 qDebug() << "boxClicked, median = " << set->median();
368 }
369
370 void MainWidget::boxHovered(bool state, QBoxSet *set)
371 {
372 if (state)
373 qDebug() << "box median " << set->median() << " hover started";
374 else
375 qDebug() << "box median " << set->median() << " hover ended";
376 }
377
378 void MainWidget::singleBoxClicked()
379 {
380 qDebug() << "singleBoxClicked";
381 }
382
383 void MainWidget::singleBoxHovered(bool state)
384 {
385 if (state)
386 qDebug() << "single box hover started";
387 else
388 qDebug() << "single box hover ended";
389 }
@@ -28,6 +28,7
28 #include <QWidget>
28 #include <QWidget>
29 #include <QBoxPlotSeries>
29 #include <QBoxPlotSeries>
30 #include <QBarCategoryAxis>
30 #include <QBarCategoryAxis>
31 #include <QBoxSet>
31
32
32 class QGridLayout;
33 class QGridLayout;
33
34
@@ -58,6 +59,10 private slots:
58 void titleToggled(bool enabled);
59 void titleToggled(bool enabled);
59 void modelMapperToggled(bool enabled);
60 void modelMapperToggled(bool enabled);
60 void changeChartTheme(int themeIndex);
61 void changeChartTheme(int themeIndex);
62 void boxClicked(QBoxSet *set);
63 void boxHovered(bool state, QBoxSet *set);
64 void singleBoxClicked();
65 void singleBoxHovered(bool state);
61
66
62 private:
67 private:
63 QChart *m_chart;
68 QChart *m_chart;
General Comments 0
You need to be logged in to leave comments. Login now