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 };
106 Q_ENUM(ThemeHint)
107
108 enum DialogType {
109 FileDialog,
110 ColorDialog,
111 FontDialog,
112 MessageDialog
113 };
114 Q_ENUM(DialogType)
115
116 enum Palette {
117 SystemPalette,
118 ToolTipPalette,
119 ToolButtonPalette,
120 ButtonPalette,
121 CheckBoxPalette,
122 RadioButtonPalette,
123 HeaderPalette,
124 ComboBoxPalette,
125 ItemViewPalette,
126 MessageBoxLabelPelette,
127 MessageBoxLabelPalette = MessageBoxLabelPelette,
128 TabBarPalette,
129 LabelPalette,
130 GroupBoxPalette,
131 MenuPalette,
132 MenuBarPalette,
133 TextEditPalette,
134 TextLineEditPalette,
135 NPalettes
136 };
137 Q_ENUM(Palette)
138
139 enum Font {
140 SystemFont,
141 MenuFont,
142 MenuBarFont,
143 MenuItemFont,
144 MessageBoxFont,
145 LabelFont,
146 TipLabelFont,
147 StatusBarFont,
148 TitleBarFont,
149 MdiSubWindowTitleFont,
150 DockWidgetTitleFont,
151 PushButtonFont,
152 CheckBoxFont,
153 RadioButtonFont,
154 ToolButtonFont,
155 ItemViewFont,
156 ListViewFont,
157 HeaderViewFont,
158 ListBoxFont,
159 ComboMenuItemFont,
160 ComboLineEditFont,
161 SmallFont,
162 MiniFont,
163 FixedFont,
164 GroupBoxTitleFont,
165 TabButtonFont,
166 EditorFont,
167 NFonts
168 };
169 Q_ENUM(Font)
170
171 enum StandardPixmap { // Keep in sync with QStyle::StandardPixmap
172 TitleBarMenuButton,
173 TitleBarMinButton,
174 TitleBarMaxButton,
175 TitleBarCloseButton,
176 TitleBarNormalButton,
177 TitleBarShadeButton,
178 TitleBarUnshadeButton,
179 TitleBarContextHelpButton,
180 DockWidgetCloseButton,
181 MessageBoxInformation,
182 MessageBoxWarning,
183 MessageBoxCritical,
184 MessageBoxQuestion,
185 DesktopIcon,
186 TrashIcon,
187 ComputerIcon,
188 DriveFDIcon,
189 DriveHDIcon,
190 DriveCDIcon,
191 DriveDVDIcon,
192 DriveNetIcon,
193 DirOpenIcon,
194 DirClosedIcon,
195 DirLinkIcon,
196 DirLinkOpenIcon,
197 FileIcon,
198 FileLinkIcon,
199 ToolBarHorizontalExtensionButton,
200 ToolBarVerticalExtensionButton,
201 FileDialogStart,
202 FileDialogEnd,
203 FileDialogToParent,
204 FileDialogNewFolder,
205 FileDialogDetailedView,
206 FileDialogInfoView,
207 FileDialogContentsView,
208 FileDialogListView,
209 FileDialogBack,
210 DirIcon,
211 DialogOkButton,
212 DialogCancelButton,
213 DialogHelpButton,
214 DialogOpenButton,
215 DialogSaveButton,
216 DialogCloseButton,
217 DialogApplyButton,
218 DialogResetButton,
219 DialogDiscardButton,
220 DialogYesButton,
221 DialogNoButton,
222 ArrowUp,
223 ArrowDown,
224 ArrowLeft,
225 ArrowRight,
226 ArrowBack,
227 ArrowForward,
228 DirHomeIcon,
229 CommandLink,
230 VistaShield,
231 BrowserReload,
232 BrowserStop,
233 MediaPlay,
234 MediaStop,
235 MediaPause,
236 MediaSkipForward,
237 MediaSkipBackward,
238 MediaSeekForward,
239 MediaSeekBackward,
240 MediaVolume,
241 MediaVolumeMuted,
242 LineEditClearButton,
243 DialogYesToAllButton,
244 DialogNoToAllButton,
245 DialogSaveAllButton,
246 DialogAbortButton,
247 DialogRetryButton,
248 DialogIgnoreButton,
249 RestoreDefaultsButton,
250 TabCloseButton,
251 TabScrollLeftButton,
252 TabScrollRightButton,
253 TabScrollUpButton,
254 TabScrollDownButton,
255 NStandardPixmap, // assertion value for sync with QStyle::StandardPixmap
256
257 // do not add any values below/greater than this
258 CustomBase = 0xf0000000
259 };
260 Q_ENUM(StandardPixmap)
261
262 enum KeyboardSchemes
263 {
264 WindowsKeyboardScheme,
265 MacKeyboardScheme,
266 X11KeyboardScheme,
267 KdeKeyboardScheme,
268 GnomeKeyboardScheme,
269 CdeKeyboardScheme
270 };
271 Q_ENUM(KeyboardSchemes)
272
273 enum UiEffect
274 {
275 GeneralUiEffect = 0x1,
276 AnimateMenuUiEffect = 0x2,
277 FadeMenuUiEffect = 0x4,
278 AnimateComboUiEffect = 0x8,
279 AnimateTooltipUiEffect = 0x10,
280 FadeTooltipUiEffect = 0x20,
281 AnimateToolBoxUiEffect = 0x40,
282 HoverEffect = 0x80
283 };
284 Q_ENUM(UiEffect)
285
286 enum IconOption {
287 DontUseCustomDirectoryIcons = 0x01
288 };
289 Q_DECLARE_FLAGS(IconOptions, IconOption)
290
291 explicit QPlatformTheme();
292 virtual ~QPlatformTheme();
293
294 virtual QPlatformMenuItem* createPlatformMenuItem() const;
295 virtual QPlatformMenu* createPlatformMenu() const;
296 virtual QPlatformMenuBar* createPlatformMenuBar() const;
297 virtual void showPlatformMenuBar() {}
298
299 virtual bool usePlatformNativeDialog(DialogType type) const;
300 virtual QPlatformDialogHelper *createPlatformDialogHelper(DialogType type) const;
301
302#ifndef QT_NO_SYSTEMTRAYICON
303 virtual QPlatformSystemTrayIcon *createPlatformSystemTrayIcon() const;
304#endif
305
306 virtual Qt::ColorScheme colorScheme() const;
307
308 virtual const QPalette *palette(Palette type = SystemPalette) const;
309
310 virtual const QFont *font(Font type = SystemFont) const;
311
312 virtual QVariant themeHint(ThemeHint hint) const;
313
314 virtual QPixmap standardPixmap(StandardPixmap sp, const QSizeF &size) const;
315 virtual QIcon fileIcon(const QFileInfo &fileInfo,
316 QPlatformTheme::IconOptions iconOptions = { }) const;
317 virtual QIconEngine *createIconEngine(const QString &iconName) const;
318
319#if QT_CONFIG(shortcut)
320 virtual QList<QKeySequence> keyBindings(QKeySequence::StandardKey key) const;
321#endif
322
323 virtual QString standardButtonText(int button) const;
324#if QT_CONFIG(shortcut)
325 virtual QKeySequence standardButtonShortcut(int button) const;
326#endif
327 virtual void requestColorScheme(Qt::ColorScheme scheme);
328 virtual Qt::ContrastPreference contrastPreference() const;
329 virtual Qt::MotionPreference motionPreference() const;
330
331 static QVariant defaultThemeHint(ThemeHint hint);
332 static QString defaultStandardButtonText(int button);
333 static QString removeMnemonics(const QString &original);
334 QString name() const;
335
336protected:
337 explicit QPlatformTheme(QPlatformThemePrivate *priv);
338 QScopedPointer<QPlatformThemePrivate> d_ptr;
339
340private:
341 friend class QPlatformThemeFactory;
342};
343
344QT_END_NAMESPACE
345
346#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.