DtkWidget 5.6.0.2
DTK Widget module
dstyleoption.h
1// SPDX-FileCopyrightText: 2017 - 2022 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#ifndef DSTYLEOPTION_H
6#define DSTYLEOPTION_H
7
8#include <dtkwidget_global.h>
9#include <DPalette>
10
11#include <DDciIcon>
12#include <QStyleOption>
13
14QT_BEGIN_NAMESPACE
15class QGuiApplication;
16QT_END_NAMESPACE
17
18DGUI_USE_NAMESPACE
19
20DTK_BEGIN_NAMESPACE
21
22enum ItemDataRole {
23 MarginsRole = Qt::UserRole + 1,
24 LeftActionListRole,
25 TopActionListRole,
26 RightActionListRole,
27 BottomActionListRole,
28 TextActionListRole,
29 ViewItemFontLevelRole,
30 ViewItemBackgroundRole,
31 ViewItemForegroundRole,
33};
34
35DTK_END_NAMESPACE
36
37DWIDGET_BEGIN_NAMESPACE
38
40{
41public:
42 enum OptionType {
43 SO_HighlightButton = QStyleOption::SO_CustomBase + 1,
44 SO_CustomBase = QStyleOption::SO_CustomBase << 2
45 };
46
47 virtual void init(QWidget *widget);
48 virtual void init(const QWidget *widget);
49 virtual ~DStyleOption() {}
50
51 DPalette dpalette;
52};
53
54class DStyleOptionButton : public QStyleOptionButton, public DStyleOption
55{
56public:
57 enum ButtonFeature {
58 SuggestButton = (CommandLinkButton << 1),
59 WarningButton = (SuggestButton << 1),
60 FloatingButton = (WarningButton << 1),
61 TitleBarButton = (FloatingButton << 1),
62 CircleButton = (TitleBarButton << 1),
63 HasDciIcon = (CircleButton << 1)
64 };
65
66 void init(const QWidget *widget) override;
67 DDciIcon dciIcon;
68};
69
71{
72public:
73 enum ButtonPosition {
74 Invalid,
75 Beginning,
76 Middle,
77 End,
78 OnlyOne
79 };
80
81 Qt::Orientation orientation;
82 ButtonPosition position;
83};
84
86{
87public:
88 enum LineEditFeature {
89 None = 0x0,
90 Alert = 0x1,
91 IconButton = 0x2
92 };
93 Q_DECLARE_FLAGS(LineEditFeatures, LineEditFeature)
94
95 void init(const QWidget *widget) override;
96
97 LineEditFeatures features = None;
98 QRect iconButtonRect;
99};
100
101class DStyleOptionBackgroundGroup : public QStyleOption, public DStyleOption
102{
103public:
104 enum ItemBackgroundPosition {
105 Invalid,
106 Beginning,
107 Middle,
108 End,
109 OnlyOne
110 };
111
112 using DStyleOption::DStyleOption;
113 using QStyleOption::QStyleOption;
114 void init(const QWidget *widget) override;
115
116 Qt::Orientations directions;
117 ItemBackgroundPosition position;
118};
119
120class DStyleOptionIcon : public QStyleOption, public DStyleOption
121{
122public:
123 QIcon icon;
124};
125
127
129{
130public:
131 enum IconType { SI_QIcon, SI_DciIcon };
132
133 IconType iconType;
134 QSize iconSize;
135 Qt::Alignment iconAlignment;
136
137 DDciIcon dciIcon;
138 DDciIcon::Theme dciTheme;
139 DDciIcon::Mode dciMode;
140};
141
142class DStyleOptionViewItem : public QStyleOptionViewItem, public DStyleOption
143{
144public:
145 enum ViewItemFeature {
146
147 };
148};
149
150class DStyleOptionFloatingWidget : public QStyleOption, public DStyleOption
151{
152public:
153 using DStyleOption::init;
154 bool noBackground;
155 int frameRadius = -1;
156};
157
160{
161public:
162 enum SizeType {
163 T1,
164 T2,
165 T3,
166 T4,
167 T5,
168 T6,
169 T7,
170 T8,
171 T9,
172 T10,
173 NSizeTypes
174 };
175
176 static DFontSizeManager *instance();
177 void bind(QWidget *widget, SizeType type);
178 void bind(QWidget *widget, SizeType type, int weight);
179 void unbind(QWidget *widget);
180
181 quint16 fontPixelSize(SizeType type) const;
182 void setFontPixelSize(SizeType type, quint16 size);
183 void setFontGenericPixelSize(quint16 size);
184 const QFont get(SizeType type, const QFont &base = QFont()) const;
185 const QFont get(SizeType type, int weight, const QFont &base = QFont()) const;
186
187 inline const QFont t1(const QFont &base = QFont()) const
188 { return get(T1, base); }
189 inline const QFont t2(const QFont &base = QFont()) const
190 { return get(T2, base); }
191 inline const QFont t3(const QFont &base = QFont()) const
192 { return get(T3, base); }
193 inline const QFont t4(const QFont &base = QFont()) const
194 { return get(T4, base); }
195 inline const QFont t5(const QFont &base = QFont()) const
196 { return get(T5, base); }
197 inline const QFont t6(const QFont &base = QFont()) const
198 { return get(T6, base); }
199 inline const QFont t7(const QFont &base = QFont()) const
200 { return get(T7, base); }
201 inline const QFont t8(const QFont &base = QFont()) const
202 { return get(T8, base); }
203 inline const QFont t9(const QFont &base = QFont()) const
204 { return get(T9, base); }
205 inline const QFont t10(const QFont &base = QFont()) const
206 { return get(T10, base); }
207
208 static int fontPixelSize(const QFont &font);
209
210private:
212
214};
215
216DWIDGET_END_NAMESPACE
217
218#endif // DSTYLEOPTION_H
Definition: dstyleoption.cpp:136
字体大小设置的一个类,系统默认只设置T6.
Definition: dstyleoption.h:160
Definition: dstyleoption.h:102
Definition: dstyleoption.h:71
Dtk 样式统一的按钮样式配置.
Definition: dstyleoption.h:55
Definition: dstyleoption.h:151
Definition: dstyleoption.h:129
Definition: dstyleoption.h:121
Dtk::Widget::DLineEdit使用的样式配置.
Definition: dstyleoption.h:86
Definition: dstyleoption.h:143
dcxb插件通过DStyleOption来控制控件的样式.
Definition: dstyleoption.h:40
typedef Alignment
UserRole
Orientation