1 | // Copyright (C) 2024 The Qt Company Ltd. |
2 | // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only |
3 | |
4 | #ifndef Q3DBARSWIDGETITEM_H |
5 | #define Q3DBARSWIDGETITEM_H |
6 | |
7 | #include <QtGraphs/qbar3dseries.h> |
8 | #include <QtGraphs/qcategory3daxis.h> |
9 | #include <QtGraphs/qvalue3daxis.h> |
10 | #include <QtGraphsWidgets/q3dgraphswidgetitem.h> |
11 | |
12 | QT_BEGIN_NAMESPACE |
13 | |
14 | class QQuickGraphsBars; |
15 | class Q3DBarsWidgetItemPrivate; |
16 | |
17 | class Q_GRAPHSWIDGETS_EXPORT Q3DBarsWidgetItem : public Q3DGraphsWidgetItem |
18 | { |
19 | Q_OBJECT |
20 | Q_PROPERTY(bool multiSeriesUniform READ isMultiSeriesUniform WRITE setMultiSeriesUniform NOTIFY |
21 | multiSeriesUniformChanged) |
22 | Q_PROPERTY(float barThickness READ barThickness WRITE setBarThickness NOTIFY barThicknessChanged) |
23 | Q_PROPERTY(QSizeF barSpacing READ barSpacing WRITE setBarSpacing NOTIFY barSpacingChanged) |
24 | Q_PROPERTY(bool barSpacingRelative READ isBarSpacingRelative WRITE setBarSpacingRelative NOTIFY |
25 | barSpacingRelativeChanged) |
26 | Q_PROPERTY(QSizeF barSeriesMargin READ barSeriesMargin WRITE setBarSeriesMargin NOTIFY |
27 | barSeriesMarginChanged) |
28 | Q_PROPERTY(QCategory3DAxis *rowAxis READ rowAxis WRITE setRowAxis NOTIFY rowAxisChanged) |
29 | Q_PROPERTY( |
30 | QCategory3DAxis *columnAxis READ columnAxis WRITE setColumnAxis NOTIFY columnAxisChanged) |
31 | Q_PROPERTY(QValue3DAxis *valueAxis READ valueAxis WRITE setValueAxis NOTIFY valueAxisChanged) |
32 | Q_PROPERTY(QBar3DSeries *primarySeries READ primarySeries WRITE setPrimarySeries NOTIFY |
33 | primarySeriesChanged) |
34 | Q_PROPERTY(QBar3DSeries *selectedSeries READ selectedSeries NOTIFY selectedSeriesChanged) |
35 | Q_PROPERTY(float floorLevel READ floorLevel WRITE setFloorLevel NOTIFY floorLevelChanged) |
36 | |
37 | public: |
38 | explicit Q3DBarsWidgetItem(QObject *parent = nullptr); |
39 | ~Q3DBarsWidgetItem() override; |
40 | |
41 | void setPrimarySeries(QBar3DSeries *series); |
42 | QBar3DSeries *primarySeries() const; |
43 | void addSeries(QBar3DSeries *series); |
44 | void removeSeries(QBar3DSeries *series); |
45 | void insertSeries(int index, QBar3DSeries *series); |
46 | QList<QBar3DSeries *> seriesList() const; |
47 | |
48 | void setMultiSeriesUniform(bool uniform); |
49 | bool isMultiSeriesUniform() const; |
50 | |
51 | void setBarThickness(float thicknessRatio); |
52 | float barThickness() const; |
53 | |
54 | void setBarSpacing(QSizeF spacing); |
55 | QSizeF barSpacing() const; |
56 | |
57 | void setBarSpacingRelative(bool relative); |
58 | bool isBarSpacingRelative() const; |
59 | |
60 | void setBarSeriesMargin(QSizeF margin); |
61 | QSizeF barSeriesMargin() const; |
62 | |
63 | void setRowAxis(QCategory3DAxis *axis); |
64 | QCategory3DAxis *rowAxis() const; |
65 | void setColumnAxis(QCategory3DAxis *axis); |
66 | QCategory3DAxis *columnAxis() const; |
67 | void setValueAxis(QValue3DAxis *axis); |
68 | QValue3DAxis *valueAxis() const; |
69 | void addAxis(QAbstract3DAxis *axis); |
70 | void releaseAxis(QAbstract3DAxis *axis); |
71 | QList<QAbstract3DAxis *> axes() const; |
72 | |
73 | QBar3DSeries *selectedSeries() const; |
74 | void setFloorLevel(float level); |
75 | float floorLevel() const; |
76 | |
77 | protected: |
78 | bool event(QEvent *event) override; |
79 | |
80 | Q_SIGNALS: |
81 | void multiSeriesUniformChanged(bool uniform); |
82 | void barThicknessChanged(float thicknessRatio); |
83 | void barSpacingChanged(QSizeF spacing); |
84 | void barSpacingRelativeChanged(bool relative); |
85 | void barSeriesMarginChanged(QSizeF margin); |
86 | void rowAxisChanged(QCategory3DAxis *axis); |
87 | void columnAxisChanged(QCategory3DAxis *axis); |
88 | void valueAxisChanged(QValue3DAxis *axis); |
89 | void primarySeriesChanged(QBar3DSeries *series); |
90 | void selectedSeriesChanged(QBar3DSeries *series); |
91 | void floorLevelChanged(float level); |
92 | |
93 | private: |
94 | Q_DECLARE_PRIVATE(Q3DBarsWidgetItem) |
95 | Q_DISABLE_COPY_MOVE(Q3DBarsWidgetItem) |
96 | QQuickGraphsBars *graphBars(); |
97 | const QQuickGraphsBars *graphBars() const; |
98 | }; |
99 | |
100 | QT_END_NAMESPACE |
101 | |
102 | #endif |
103 | |