1// Copyright (C) 2023 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4#ifndef QBARSERIES_H
5#define QBARSERIES_H
6
7#include <QtGraphs/qabstractseries.h>
8#include <QtGraphs/qgraphsglobal.h>
9
10QT_BEGIN_NAMESPACE
11
12class QBarSet;
13class QBarSeriesPrivate;
14
15class Q_GRAPHS_EXPORT QBarSeries : public QAbstractSeries
16{
17 Q_OBJECT
18 Q_CLASSINFO("RegisterEnumClassesUnscoped", "false")
19 Q_PROPERTY(QList<QColor> seriesColors READ seriesColors WRITE setSeriesColors NOTIFY seriesColorsChanged FINAL)
20 Q_PROPERTY(QList<QColor> borderColors READ borderColors WRITE setBorderColors NOTIFY borderColorsChanged FINAL)
21 Q_PROPERTY(BarsType barsType READ barsType WRITE setBarsType NOTIFY barsTypeChanged FINAL)
22 Q_PROPERTY(qreal barWidth READ barWidth WRITE setBarWidth NOTIFY barWidthChanged FINAL)
23 Q_PROPERTY(qsizetype count READ count NOTIFY countChanged FINAL)
24 Q_PROPERTY(bool labelsVisible READ labelsVisible WRITE setLabelsVisible NOTIFY
25 labelsVisibleChanged FINAL)
26 Q_PROPERTY(QString labelsFormat READ labelsFormat WRITE setLabelsFormat NOTIFY
27 labelsFormatChanged FINAL)
28 Q_PROPERTY(LabelsPosition labelsPosition READ labelsPosition WRITE setLabelsPosition NOTIFY
29 labelsPositionChanged FINAL)
30 Q_PROPERTY(
31 qreal labelsMargin READ labelsMargin WRITE setLabelsMargin NOTIFY labelsMarginChanged FINAL)
32 Q_PROPERTY(
33 qreal labelsAngle READ labelsAngle WRITE setLabelsAngle NOTIFY labelsAngleChanged FINAL)
34 Q_PROPERTY(int labelsPrecision READ labelsPrecision WRITE setLabelsPrecision NOTIFY
35 labelsPrecisionChanged FINAL)
36 Q_PROPERTY(QQmlComponent *barDelegate READ barDelegate WRITE setBarDelegate NOTIFY barDelegateChanged FINAL)
37 Q_PROPERTY(QList<QBarSet *> barSets READ barSets NOTIFY barSetsChanged FINAL)
38 QML_NAMED_ELEMENT(BarSeries)
39
40public:
41 enum class LabelsPosition {
42 Center,
43 InsideEnd,
44 InsideBase,
45 OutsideEnd,
46 };
47 Q_ENUM(LabelsPosition)
48
49 enum class BarsType {
50 Groups,
51 Stacked,
52 StackedPercent,
53 };
54 Q_ENUM(BarsType)
55
56 explicit QBarSeries(QObject *parent = nullptr);
57 ~QBarSeries() override;
58 QAbstractSeries::SeriesType type() const override;
59
60 QList<QColor> seriesColors() const;
61 void setSeriesColors(const QList<QColor> &newSeriesColors);
62
63 QList<QColor> borderColors() const;
64 void setBorderColors(const QList<QColor> &newBorderColors);
65
66 void setBarsType(QBarSeries::BarsType type);
67 QBarSeries::BarsType barsType() const;
68
69 void setBarWidth(qreal width);
70 qreal barWidth() const;
71
72 Q_INVOKABLE bool append(QBarSet *set);
73 Q_INVOKABLE bool take(QBarSet *set);
74 Q_INVOKABLE qsizetype count() const;
75 Q_INVOKABLE bool append(const QList<QBarSet *> &sets);
76 Q_INVOKABLE bool remove(QBarSet *set);
77 Q_INVOKABLE bool insert(qsizetype index, QBarSet *set);
78 Q_INVOKABLE void clear();
79 Q_INVOKABLE void replace(qsizetype index, QBarSet *set);
80 Q_INVOKABLE QBarSet *at(qsizetype index);
81 Q_INVOKABLE qsizetype find(QBarSet *set) const;
82 Q_INVOKABLE void removeMultiple(qsizetype index, qsizetype count);
83 Q_INVOKABLE bool remove(qsizetype index);
84 Q_INVOKABLE bool replace(QBarSet *oldValue, QBarSet *newValue);
85 Q_INVOKABLE bool replace(const QList<QBarSet *> &sets);
86
87 QList<QBarSet *> barSets() const;
88
89 void setLabelsVisible(bool visible = true);
90 bool labelsVisible() const;
91
92 void setLabelsFormat(const QString &format);
93 QString labelsFormat() const;
94
95 void setLabelsMargin(qreal margin);
96 qreal labelsMargin() const;
97
98 void setLabelsAngle(qreal angle);
99 qreal labelsAngle() const;
100
101 void setLabelsPosition(QBarSeries::LabelsPosition position);
102 QBarSeries::LabelsPosition labelsPosition() const;
103
104 void setLabelsPrecision(int precision);
105 int labelsPrecision() const;
106
107 QQmlComponent *barDelegate() const;
108 void setBarDelegate(QQmlComponent *newBarDelegate);
109
110public Q_SLOTS:
111 void selectAll();
112 void deselectAll();
113
114protected:
115 QBarSeries(QBarSeriesPrivate &dd, QObject *parent = nullptr);
116 void componentComplete() override;
117
118Q_SIGNALS:
119 void updatedBars();
120 void seriesColorsChanged();
121 void borderColorsChanged();
122 void countChanged();
123 void barWidthChanged();
124 void labelsVisibleChanged(bool visible);
125 void labelsFormatChanged(const QString &format);
126 void labelsPositionChanged(QBarSeries::LabelsPosition position);
127 void barsTypeChanged(QBarSeries::BarsType type);
128 void labelsMarginChanged(qreal margin);
129 void labelsAngleChanged(qreal angle);
130 void labelsPrecisionChanged(int precision);
131 void barDelegateChanged();
132
133 void barsetsAdded(const QList<QBarSet *> &sets);
134 void barsetsReplaced(const QList<QBarSet *> &sets);
135 void barsetsRemoved(const QList<QBarSet *> &sets);
136 void setValueChanged(qsizetype index, QBarSet *barset);
137 void setValueAdded(qsizetype index, qsizetype count, QBarSet *barset);
138 void setValueRemoved(qsizetype index, qsizetype count, QBarSet *barset);
139 void barSetsChanged();
140
141private Q_SLOTS:
142 void handleSetValueChange(qsizetype index);
143 void handleSetValueAdd(qsizetype index, qsizetype count);
144 void handleSetValueRemove(qsizetype index, qsizetype count);
145
146private:
147 Q_DECLARE_PRIVATE(QBarSeries)
148 Q_DISABLE_COPY(QBarSeries)
149 friend class BarSet;
150 friend class BarsRenderer;
151 bool barDelegateDirty() const;
152 void setBarDelegateDirty(bool dirty);
153};
154
155QT_END_NAMESPACE
156
157#endif // QBARSERIES_H
158

Provided by KDAB

Privacy Policy
Start learning QML with our Intro Training
Find out more

source code of qtgraphs/src/graphs2d/barchart/qbarseries.h