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
qplatformtheme.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QPLATFORMTHEME_H
6#define QPLATFORMTHEME_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is part of the QPA API and is not meant to be used
13// in applications. Usage of this API may make your code
14// source and binary incompatible with future versions of Qt.
15//
16
17#include <QtGui/qtguiglobal.h>
18#include <QtCore/QObject>
19#include <QtCore/QScopedPointer>
20#if QT_CONFIG(shortcut)
21# include <QtGui/QKeySequence>
22#endif
23
24QT_BEGIN_NAMESPACE
25
26class QIcon;
27class QIconEngine;
28class QMenu;
29class QMenuBar;
30class QPlatformMenuItem;
31class QPlatformMenu;
32class QPlatformMenuBar;
33class QPlatformDialogHelper;
34class QPlatformSystemTrayIcon;
35class QPlatformThemePrivate;
36class QVariant;
37class QPalette;
38class QFont;
39class QPixmap;
40class QSizeF;
41class QFileInfo;
42
43class Q_GUI_EXPORT QPlatformTheme
44{
45 Q_GADGET
46 Q_DECLARE_PRIVATE(QPlatformTheme)
47
48public:
49 Q_DISABLE_COPY_MOVE(QPlatformTheme)
50
51 enum ThemeHint {
52 CursorFlashTime,
53 KeyboardInputInterval,
54 MouseDoubleClickInterval,
55 StartDragDistance,
56 StartDragTime,
57 KeyboardAutoRepeatRate,
58 PasswordMaskDelay,
59 StartDragVelocity,
60 TextCursorWidth,
61 DropShadow,
62 MaximumScrollBarDragDistance,
63 ToolButtonStyle,
64 ToolBarIconSize,
65 ItemViewActivateItemOnSingleClick,
66 SystemIconThemeName,
67 SystemIconFallbackThemeName,
68 IconThemeSearchPaths,
69 StyleNames,
70 WindowAutoPlacement,
71 DialogButtonBoxLayout,
72 DialogButtonBoxButtonsHaveIcons,
73 UseFullScreenForPopupMenu,
74 KeyboardScheme,
75 UiEffects,
76 SpellCheckUnderlineStyle,
77 TabFocusBehavior,
78 IconPixmapSizes,
79 PasswordMaskCharacter,
80 DialogSnapToDefaultButton,
81 ContextMenuOnMouseRelease,
82 MousePressAndHoldInterval,
83 MouseDoubleClickDistance,
84 WheelScrollLines,
85 TouchDoubleTapDistance,
86 ShowShortcutsInContextMenus,
87 IconFallbackSearchPaths,
88 MouseQuickSelectionThreshold,
89 InteractiveResizeAcrossScreens,
90 ShowDirectoriesFirst,
91 PreselectFirstFileInDirectory,
92 ButtonPressKeys,
93 SetFocusOnTouchRelease,
94 FlickStartDistance,
95 FlickMaximumVelocity,
96 FlickDeceleration,
97 MenuBarFocusOnAltPressRelease,
98 MouseCursorTheme,
99 MouseCursorSize,
100 UnderlineShortcut,
101 ShowIconsInMenus,
102 PreferFileIconFromTheme,
103 MenuSelectionWraps,
104 ScrollSingleStepDistance,
105 MnemonicsEnabled,
106 MenuActivationButtons,
107 };
108 Q_ENUM(ThemeHint)
109
110 enum DialogType {
111 FileDialog,
112 ColorDialog,
113 FontDialog,
114 MessageDialog
115 };
116 Q_ENUM(DialogType)
117
118 enum Palette {
119 SystemPalette,
120 ToolTipPalette,
121 ToolButtonPalette,
122 ButtonPalette,
123 CheckBoxPalette,
124 RadioButtonPalette,
125 HeaderPalette,
126 ComboBoxPalette,
127 ItemViewPalette,
128 MessageBoxLabelPelette,
129 MessageBoxLabelPalette = MessageBoxLabelPelette,
130 TabBarPalette,
131 LabelPalette,
132 GroupBoxPalette,
133 MenuPalette,
134 MenuBarPalette,
135 TextEditPalette,
136 TextLineEditPalette,
137 NPalettes
138 };
139 Q_ENUM(Palette)
140
141 enum Font {
142 SystemFont,
143 MenuFont,
144 MenuBarFont,
145 MenuItemFont,
146 MessageBoxFont,
147 LabelFont,
148 TipLabelFont,
149 StatusBarFont,
150 TitleBarFont,
151 MdiSubWindowTitleFont,
152 DockWidgetTitleFont,
153 PushButtonFont,
154 CheckBoxFont,
155 RadioButtonFont,
156 ToolButtonFont,
157 ItemViewFont,
158 ListViewFont,
159 HeaderViewFont,
160 ListBoxFont,
161 ComboMenuItemFont,
162 ComboLineEditFont,
163 SmallFont,
164 MiniFont,
165 FixedFont,
166 GroupBoxTitleFont,
167 TabButtonFont,
168 EditorFont,
169 NFonts
170 };
171 Q_ENUM(Font)
172
173 enum StandardPixmap { // Keep in sync with QStyle::StandardPixmap
174 TitleBarMenuButton,
175 TitleBarMinButton,
176 TitleBarMaxButton,
177 TitleBarCloseButton,
178 TitleBarNormalButton,
179 TitleBarShadeButton,
180 TitleBarUnshadeButton,
181 TitleBarContextHelpButton,
182 DockWidgetCloseButton,
183 MessageBoxInformation,
184 MessageBoxWarning,
185 MessageBoxCritical,
186 MessageBoxQuestion,
187 DesktopIcon,
188 TrashIcon,
189 ComputerIcon,
190 DriveFDIcon,
191 DriveHDIcon,
192 DriveCDIcon,
193 DriveDVDIcon,
194 DriveNetIcon,
195 DirOpenIcon,
196 DirClosedIcon,
197 DirLinkIcon,
198 DirLinkOpenIcon,
199 FileIcon,
200 FileLinkIcon,
201 ToolBarHorizontalExtensionButton,
202 ToolBarVerticalExtensionButton,
203 FileDialogStart,
204 FileDialogEnd,
205 FileDialogToParent,
206 FileDialogNewFolder,
207 FileDialogDetailedView,
208 FileDialogInfoView,
209 FileDialogContentsView,
210 FileDialogListView,
211 FileDialogBack,
212 DirIcon,
213 DialogOkButton,
214 DialogCancelButton,
215 DialogHelpButton,
216 DialogOpenButton,
217 DialogSaveButton,
218 DialogCloseButton,
219 DialogApplyButton,
220 DialogResetButton,
221 DialogDiscardButton,
222 DialogYesButton,
223 DialogNoButton,
224 ArrowUp,
225 ArrowDown,
226 ArrowLeft,
227 ArrowRight,
228 ArrowBack,
229 ArrowForward,
230 DirHomeIcon,
231 CommandLink,
232 VistaShield,
233 BrowserReload,
234 BrowserStop,
235 MediaPlay,
236 MediaStop,
237 MediaPause,
238 MediaSkipForward,
239 MediaSkipBackward,
240 MediaSeekForward,
241 MediaSeekBackward,
242 MediaVolume,
243 MediaVolumeMuted,
244 LineEditClearButton,
245 DialogYesToAllButton,
246 DialogNoToAllButton,
247 DialogSaveAllButton,
248 DialogAbortButton,
249 DialogRetryButton,
250 DialogIgnoreButton,
251 RestoreDefaultsButton,
252 TabCloseButton,
253 TabScrollLeftButton,
254 TabScrollRightButton,
255 TabScrollUpButton,
256 TabScrollDownButton,
257 NStandardPixmap, // assertion value for sync with QStyle::StandardPixmap
258
259 // do not add any values below/greater than this
260 CustomBase = 0xf0000000
261 };
262 Q_ENUM(StandardPixmap)
263
264 enum KeyboardSchemes
265 {
266 WindowsKeyboardScheme,
267 MacKeyboardScheme,
268 X11KeyboardScheme,
269 KdeKeyboardScheme,
270 GnomeKeyboardScheme,
271 CdeKeyboardScheme
272 };
273 Q_ENUM(KeyboardSchemes)
274
275 enum UiEffect
276 {
277 GeneralUiEffect = 0x1,
278 AnimateMenuUiEffect = 0x2,
279 FadeMenuUiEffect = 0x4,
280 AnimateComboUiEffect = 0x8,
281 AnimateTooltipUiEffect = 0x10,
282 FadeTooltipUiEffect = 0x20,
283 AnimateToolBoxUiEffect = 0x40,
284 HoverEffect = 0x80
285 };
286 Q_ENUM(UiEffect)
287
288 enum IconOption {
289 DontUseCustomDirectoryIcons = 0x01
290 };
291 Q_DECLARE_FLAGS(IconOptions, IconOption)
292
293 explicit QPlatformTheme();
294 virtual ~QPlatformTheme();
295
296 virtual QPlatformMenuItem* createPlatformMenuItem() const;
297 virtual QPlatformMenu* createPlatformMenu() const;
298 virtual QPlatformMenuBar* createPlatformMenuBar() const;
299 virtual void showPlatformMenuBar() {}
300
301 virtual bool usePlatformNativeDialog(DialogType type) const;
302 virtual QPlatformDialogHelper *createPlatformDialogHelper(DialogType type) const;
303
304#ifndef QT_NO_SYSTEMTRAYICON
305 virtual QPlatformSystemTrayIcon *createPlatformSystemTrayIcon() const;
306#endif
307
308 virtual Qt::ColorScheme colorScheme() const;
309
310 virtual const QPalette *palette(Palette type = SystemPalette) const;
311
312 virtual const QFont *font(Font type = SystemFont) const;
313
314 virtual QVariant themeHint(ThemeHint hint) const;
315
316 virtual QPixmap standardPixmap(StandardPixmap sp, const QSizeF &size) const;
317 virtual QIcon fileIcon(const QFileInfo &fileInfo,
318 QPlatformTheme::IconOptions iconOptions = { }) const;
319 virtual QIconEngine *createIconEngine(const QString &iconName) const;
320
321#if QT_CONFIG(shortcut)
322 virtual QList<QKeySequence> keyBindings(QKeySequence::StandardKey key) const;
323#endif
324
325 virtual QString standardButtonText(int button) const;
326#if QT_CONFIG(shortcut)
327 virtual QKeySequence standardButtonShortcut(int button) const;
328#endif
329 virtual void requestColorScheme(Qt::ColorScheme scheme);
330 virtual Qt::ContrastPreference contrastPreference() const;
331 virtual Qt::MotionPreference motionPreference() const;
332
333 static QVariant defaultThemeHint(ThemeHint hint);
334 static QString defaultStandardButtonText(int button);
335 static QString removeMnemonics(const QString &original);
336 QString name() const;
337
338protected:
339 explicit QPlatformTheme(QPlatformThemePrivate *priv);
340 QScopedPointer<QPlatformThemePrivate> d_ptr;
341
342private:
343 friend class QPlatformThemeFactory;
344};
345
346QT_END_NAMESPACE
347
348#endif // QPLATFORMTHEME_H
The QPalette class contains color groups for each widget state.
Definition qpalette.h:20
The QPlatformTheme class allows customizing the UI based on themes.