Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qpixmapstyle_p.h
Go to the documentation of this file.
1// Copyright (C) 2014 BlackBerry Limited. All rights reserved.
2// Copyright (C) 2015 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com
3// Copyright (C) 2016 The Qt Company Ltd.
4// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
5// Qt-Security score:significant reason:default
6
7#ifndef QPIXMAPSTYLE_H
8#define QPIXMAPSTYLE_H
9
10#include <QtWidgets/private/qtwidgetsglobal_p.h>
11#include <QtWidgets/QCommonStyle>
12#include <QtWidgets/QTileRules>
13
14//
15// W A R N I N G
16// -------------
17//
18// This file is not part of the Qt API. It exists purely as an
19// implementation detail. This header file may change from version to
20// version without notice, or even be removed.
21//
22// We mean it.
23//
24
25QT_BEGIN_NAMESPACE
26
27class QPixmapStylePrivate;
28
29class Q_WIDGETS_EXPORT QPixmapStyle : public QCommonStyle
30{
31 Q_OBJECT
32
33public:
34 enum ControlDescriptor {
35 BG_Background,
36 LE_Enabled, // QLineEdit
37 LE_Disabled,
38 LE_Focused,
39 PB_Enabled, // QPushButton
40 PB_Pressed,
41 PB_PressedDisabled,
42 PB_Checked,
43 PB_Disabled,
44 TE_Enabled, // QTextEdit
45 TE_Disabled,
46 TE_Focused,
47 PB_HBackground, // Horizontal QProgressBar
48 PB_HContent,
49 PB_HComplete,
50 PB_VBackground, // Vertical QProgressBar
51 PB_VContent,
52 PB_VComplete,
53 SG_HEnabled, // Horizontal QSlider groove
54 SG_HDisabled,
55 SG_HActiveEnabled,
56 SG_HActivePressed,
57 SG_HActiveDisabled,
58 SG_VEnabled, // Vertical QSlider groove
59 SG_VDisabled,
60 SG_VActiveEnabled,
61 SG_VActivePressed,
62 SG_VActiveDisabled,
63 DD_ButtonEnabled, // QComboBox (DropDown)
64 DD_ButtonDisabled,
65 DD_ButtonPressed,
66 DD_PopupDown,
67 DD_PopupUp,
68 DD_ItemSelected,
69 ID_Selected, // QStyledItemDelegate
70 SB_Horizontal, // QScrollBar
71 SB_Vertical
72 };
73
74 enum ControlPixmap {
75 CB_Enabled, // QCheckBox
76 CB_Checked,
77 CB_Pressed,
78 CB_PressedChecked,
79 CB_Disabled,
80 CB_DisabledChecked,
81 RB_Enabled, // QRadioButton
82 RB_Checked,
83 RB_Pressed,
84 RB_Disabled,
85 RB_DisabledChecked,
86 SH_HEnabled, // Horizontal QSlider handle
87 SH_HDisabled,
88 SH_HPressed,
89 SH_VEnabled, // Vertical QSlider handle
90 SH_VDisabled,
91 SH_VPressed,
92 DD_ArrowEnabled, // QComboBox (DropDown) arrow
93 DD_ArrowDisabled,
94 DD_ArrowPressed,
95 DD_ArrowOpen,
96 DD_ItemSeparator,
97 ID_Separator // QStyledItemDelegate separator
98 };
99
100public:
101 QPixmapStyle();
102 ~QPixmapStyle();
103
104 void polish(QApplication *application) override;
105 void polish(QPalette &palette) override;
106 void polish(QWidget *widget) override;
107 void unpolish(QApplication *application) override;
108 void unpolish(QWidget *widget) override;
109
110 void drawPrimitive(PrimitiveElement element, const QStyleOption *option,
111 QPainter *painter, const QWidget *widget = nullptr) const override;
112 void drawControl(ControlElement element, const QStyleOption *option,
113 QPainter *painter, const QWidget *widget = nullptr) const override;
114 void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *option,
115 QPainter *painter, const QWidget *widget=nullptr) const override;
116
117 QSize sizeFromContents(ContentsType type, const QStyleOption *option,
118 const QSize &contentsSize, const QWidget *widget = nullptr) const override;
119 QRect subElementRect(SubElement element, const QStyleOption *option,
120 const QWidget *widget = nullptr) const override;
121 QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *option,
122 SubControl sc, const QWidget *widget = nullptr) const override;
123
124 int pixelMetric(PixelMetric metric, const QStyleOption *option = nullptr,
125 const QWidget *widget = nullptr) const override;
126 int styleHint(StyleHint hint, const QStyleOption *option,
127 const QWidget *widget, QStyleHintReturn *returnData) const override;
128 SubControl hitTestComplexControl(ComplexControl control, const QStyleOptionComplex *option,
129 const QPoint &pos, const QWidget *widget) const override;
130
131 bool eventFilter(QObject *watched, QEvent *event) override;
132
133 void addDescriptor(ControlDescriptor control, const QString &fileName,
134 QMargins margins = QMargins(),
135 QTileRules tileRules = QTileRules(Qt::RepeatTile, Qt::RepeatTile));
136 void copyDescriptor(ControlDescriptor source, ControlDescriptor dest);
137 void drawCachedPixmap(ControlDescriptor control, const QRect &rect, QPainter *p) const;
138
139 void addPixmap(ControlPixmap control, const QString &fileName,
140 QMargins margins = QMargins());
141 void copyPixmap(ControlPixmap source, ControlPixmap dest);
142
143protected:
144 void drawPushButton(const QStyleOption *option,
145 QPainter *painter, const QWidget *widget) const;
146 void drawLineEdit(const QStyleOption *option,
147 QPainter *painter, const QWidget *widget) const;
148 void drawTextEdit(const QStyleOption *option,
149 QPainter *painter, const QWidget *widget) const;
150 void drawCheckBox(const QStyleOption *option,
151 QPainter *painter, const QWidget *widget) const;
152 void drawRadioButton(const QStyleOption *option,
153 QPainter *painter, const QWidget *widget) const;
154 void drawPanelItemViewItem(const QStyleOption *option,
155 QPainter *painter, const QWidget *widget) const;
156 void drawProgressBarBackground(const QStyleOption *option,
157 QPainter *painter, const QWidget *widget) const;
158 void drawProgressBarLabel(const QStyleOption *option,
159 QPainter *painter, const QWidget *widget) const;
160 void drawProgressBarFill(const QStyleOption *option,
161 QPainter *painter, const QWidget *widget) const;
162 void drawSlider(const QStyleOptionComplex *option,
163 QPainter *painter, const QWidget *widget) const;
164 void drawComboBox(const QStyleOptionComplex *option,
165 QPainter *painter, const QWidget *widget) const;
166 void drawScrollBar(const QStyleOptionComplex *option,
167 QPainter *painter, const QWidget *widget) const;
168
169 QSize pushButtonSizeFromContents(const QStyleOption *option,
170 const QSize &contentsSize, const QWidget *widget) const;
171 QSize lineEditSizeFromContents(const QStyleOption *option,
172 const QSize &contentsSize, const QWidget *widget) const;
173 QSize progressBarSizeFromContents(const QStyleOption *option,
174 const QSize &contentsSize, const QWidget *widget) const;
175 QSize sliderSizeFromContents(const QStyleOption *option,
176 const QSize &contentsSize, const QWidget *widget) const;
177 QSize comboBoxSizeFromContents(const QStyleOption *option,
178 const QSize &contentsSize, const QWidget *widget) const;
179 QSize itemViewSizeFromContents(const QStyleOption *option,
180 const QSize &contentsSize, const QWidget *widget) const;
181
182 QRect comboBoxSubControlRect(const QStyleOptionComplex *option, QPixmapStyle::SubControl sc,
183 const QWidget *widget) const;
184 QRect scrollBarSubControlRect(const QStyleOptionComplex *option, QPixmapStyle::SubControl sc,
185 const QWidget *widget) const;
186
187protected:
188 QPixmapStyle(QPixmapStylePrivate &dd);
189
190private:
191 Q_DECLARE_PRIVATE(QPixmapStyle)
192};
193
194QT_END_NAMESPACE
195
196#endif // QPIXMAPSTYLE_H
QPixmap getCachedPixmap(QPixmapStyle::ControlDescriptor control, const QPixmapStyleDescriptor &desc, const QSize &size) const
QSize computeSize(const QPixmapStyleDescriptor &desc, int width, int height) const
The QPixmapStyle class provides mechanism for writing pixmap based styles.