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