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
qstyle.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 QSTYLE_H
6#define QSTYLE_H
7
8#include <QtWidgets/qtwidgetsglobal.h>
9#include <QtCore/qobject.h>
10#include <QtCore/qrect.h>
11#include <QtCore/qsize.h>
12#include <QtGui/qicon.h>
13#include <QtGui/qpixmap.h>
14#include <QtGui/qpalette.h>
15#include <QtWidgets/qsizepolicy.h>
16
18
19
20class QAction;
21class QDebug;
22class QTab;
23class QFontMetrics;
24class QStyleHintReturn;
25class QStyleOption;
26class QStyleOptionComplex;
27class QStylePrivate;
28
29class Q_WIDGETS_EXPORT QStyle : public QObject
30{
31 Q_OBJECT
32 Q_DECLARE_PRIVATE(QStyle)
33
34protected:
35 QStyle(QStylePrivate &dd);
36
37public:
38 QStyle();
39 virtual ~QStyle();
40
41 QString name() const;
42
43 virtual void polish(QWidget *widget);
44 virtual void unpolish(QWidget *widget);
45
46 virtual void polish(QApplication *application);
47 virtual void unpolish(QApplication *application);
48
49 virtual void polish(QPalette &palette);
50
51 virtual QRect itemTextRect(const QFontMetrics &fm, const QRect &r,
52 int flags, bool enabled,
53 const QString &text) const;
54
55 virtual QRect itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const;
56
57 virtual void drawItemText(QPainter *painter, const QRect &rect,
58 int flags, const QPalette &pal, bool enabled,
59 const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const;
60
61 virtual void drawItemPixmap(QPainter *painter, const QRect &rect,
62 int alignment, const QPixmap &pixmap) const;
63
64 virtual QPalette standardPalette() const;
65
66 enum StateFlag {
67 State_None = 0x00000000,
68 State_Enabled = 0x00000001,
69 State_Raised = 0x00000002,
70 State_Sunken = 0x00000004,
71 State_Off = 0x00000008,
72 State_NoChange = 0x00000010,
73 State_On = 0x00000020,
74 State_DownArrow = 0x00000040,
75 State_Horizontal = 0x00000080,
76 State_HasFocus = 0x00000100,
77 State_Top = 0x00000200,
78 State_Bottom = 0x00000400,
79 State_FocusAtBorder = 0x00000800,
80 State_AutoRaise = 0x00001000,
81 State_MouseOver = 0x00002000,
82 State_UpArrow = 0x00004000,
83 State_Selected = 0x00008000,
84 State_Active = 0x00010000,
85 State_Window = 0x00020000,
86 State_Open = 0x00040000,
87 State_Children = 0x00080000,
88 State_Item = 0x00100000,
89 State_Sibling = 0x00200000,
90 State_Editing = 0x00400000,
91 State_KeyboardFocusChange = 0x00800000,
92#ifdef QT_KEYPAD_NAVIGATION
93 State_HasEditFocus = 0x01000000,
94#endif
95 State_ReadOnly = 0x02000000,
96 State_Small = 0x04000000,
97 State_Mini = 0x08000000
98 };
99 Q_ENUM(StateFlag)
100 Q_DECLARE_FLAGS(State, StateFlag)
101
102
103 enum PrimitiveElement {
104 PE_Frame,
105 PE_FrameDefaultButton,
106 PE_FrameDockWidget,
107 PE_FrameFocusRect,
108 PE_FrameGroupBox,
109 PE_FrameLineEdit,
110 PE_FrameMenu,
111 PE_FrameStatusBarItem,
112 PE_FrameTabWidget,
113 PE_FrameWindow,
114 PE_FrameButtonBevel,
115 PE_FrameButtonTool,
116 PE_FrameTabBarBase,
117
118 PE_PanelButtonCommand,
119 PE_PanelButtonBevel,
120 PE_PanelButtonTool,
121 PE_PanelMenuBar,
122 PE_PanelToolBar,
123 PE_PanelLineEdit,
124
125 PE_IndicatorArrowDown,
126 PE_IndicatorArrowLeft,
127 PE_IndicatorArrowRight,
128 PE_IndicatorArrowUp,
129 PE_IndicatorBranch,
130 PE_IndicatorButtonDropDown,
131 PE_IndicatorItemViewItemCheck,
132 PE_IndicatorCheckBox,
133 PE_IndicatorDockWidgetResizeHandle,
134 PE_IndicatorHeaderArrow,
135 PE_IndicatorMenuCheckMark,
136 PE_IndicatorProgressChunk,
137 PE_IndicatorRadioButton,
138 PE_IndicatorSpinDown,
139 PE_IndicatorSpinMinus,
140 PE_IndicatorSpinPlus,
141 PE_IndicatorSpinUp,
142 PE_IndicatorToolBarHandle,
143 PE_IndicatorToolBarSeparator,
144 PE_PanelTipLabel,
145 PE_IndicatorTabTear,
146 PE_IndicatorTabTearLeft = PE_IndicatorTabTear,
147 PE_PanelScrollAreaCorner,
148
149 PE_Widget,
150
151 PE_IndicatorColumnViewArrow,
152 PE_IndicatorItemViewItemDrop,
153
154 PE_PanelItemViewItem,
155 PE_PanelItemViewRow,
156
157 PE_PanelStatusBar,
158
159 PE_IndicatorTabClose,
160 PE_PanelMenu,
161
162 PE_IndicatorTabTearRight,
163
164 // do not add any values below/greater this
165 PE_CustomBase = 0xf000000
166 };
167 Q_ENUM(PrimitiveElement)
168
169 virtual void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p,
170 const QWidget *w = nullptr) const = 0;
171 enum ControlElement {
172 CE_PushButton,
173 CE_PushButtonBevel,
174 CE_PushButtonLabel,
175
176 CE_CheckBox,
177 CE_CheckBoxLabel,
178
179 CE_RadioButton,
180 CE_RadioButtonLabel,
181
182 CE_TabBarTab,
183 CE_TabBarTabShape,
184 CE_TabBarTabLabel,
185
186 CE_ProgressBar,
187 CE_ProgressBarGroove,
188 CE_ProgressBarContents,
189 CE_ProgressBarLabel,
190
191 CE_MenuItem,
192 CE_MenuScroller,
193 CE_MenuVMargin,
194 CE_MenuHMargin,
195 CE_MenuTearoff,
196 CE_MenuEmptyArea,
197
198 CE_MenuBarItem,
199 CE_MenuBarEmptyArea,
200
201 CE_ToolButtonLabel,
202
203 CE_Header,
204 CE_HeaderSection,
205 CE_HeaderLabel,
206
207 CE_ToolBoxTab,
208 CE_SizeGrip,
209 CE_Splitter,
210 CE_RubberBand,
211 CE_DockWidgetTitle,
212
213 CE_ScrollBarAddLine,
214 CE_ScrollBarSubLine,
215 CE_ScrollBarAddPage,
216 CE_ScrollBarSubPage,
217 CE_ScrollBarSlider,
218 CE_ScrollBarFirst,
219 CE_ScrollBarLast,
220
221 CE_FocusFrame,
222 CE_ComboBoxLabel,
223
224 CE_ToolBar,
225 CE_ToolBoxTabShape,
226 CE_ToolBoxTabLabel,
227 CE_HeaderEmptyArea,
228
229 CE_ColumnViewGrip,
230
231 CE_ItemViewItem,
232
233 CE_ShapedFrame,
234
235 // do not add any values below/greater than this
236 CE_CustomBase = 0xf0000000
237 };
238 Q_ENUM(ControlElement)
239
240 virtual void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p,
241 const QWidget *w = nullptr) const = 0;
242
243 enum SubElement {
244 SE_PushButtonContents,
245 SE_PushButtonFocusRect,
246
247 SE_CheckBoxIndicator,
248 SE_CheckBoxContents,
249 SE_CheckBoxFocusRect,
250 SE_CheckBoxClickRect,
251
252 SE_RadioButtonIndicator,
253 SE_RadioButtonContents,
254 SE_RadioButtonFocusRect,
255 SE_RadioButtonClickRect,
256
257 SE_ComboBoxFocusRect,
258
259 SE_SliderFocusRect,
260
261 SE_ProgressBarGroove,
262 SE_ProgressBarContents,
263 SE_ProgressBarLabel,
264
265 SE_ToolBoxTabContents,
266
267 SE_HeaderLabel,
268 SE_HeaderArrow,
269
270 SE_TabWidgetTabBar,
271 SE_TabWidgetTabPane,
272 SE_TabWidgetTabContents,
273 SE_TabWidgetLeftCorner,
274 SE_TabWidgetRightCorner,
275
276 SE_ItemViewItemCheckIndicator,
277 SE_TabBarTearIndicator,
278 SE_TabBarTearIndicatorLeft = SE_TabBarTearIndicator,
279
280 SE_TreeViewDisclosureItem,
281
282 SE_LineEditContents,
283 SE_FrameContents,
284
285 SE_DockWidgetCloseButton,
286 SE_DockWidgetFloatButton,
287 SE_DockWidgetTitleBarText,
288 SE_DockWidgetIcon,
289
290 SE_CheckBoxLayoutItem,
291 SE_ComboBoxLayoutItem,
292 SE_DateTimeEditLayoutItem,
293 SE_LabelLayoutItem,
294 SE_ProgressBarLayoutItem,
295 SE_PushButtonLayoutItem,
296 SE_RadioButtonLayoutItem,
297 SE_SliderLayoutItem,
298 SE_SpinBoxLayoutItem,
299 SE_ToolButtonLayoutItem,
300
301 SE_FrameLayoutItem,
302 SE_GroupBoxLayoutItem,
303 SE_TabWidgetLayoutItem,
304
305 SE_ItemViewItemDecoration,
306 SE_ItemViewItemText,
307 SE_ItemViewItemFocusRect,
308
309 SE_TabBarTabLeftButton,
310 SE_TabBarTabRightButton,
311 SE_TabBarTabText,
312
313 SE_ShapedFrameContents,
314
315 SE_ToolBarHandle,
316
317 SE_TabBarScrollLeftButton,
318 SE_TabBarScrollRightButton,
319 SE_TabBarTearIndicatorRight,
320
321 SE_PushButtonBevel,
322
323 // do not add any values below/greater than this
324 SE_CustomBase = 0xf0000000
325 };
326 Q_ENUM(SubElement)
327
328 virtual QRect subElementRect(SubElement subElement, const QStyleOption *option,
329 const QWidget *widget = nullptr) const = 0;
330
331
332 enum ComplexControl {
333 CC_SpinBox,
334 CC_ComboBox,
335 CC_ScrollBar,
336 CC_Slider,
337 CC_ToolButton,
338 CC_TitleBar,
339 CC_Dial,
340 CC_GroupBox,
341 CC_MdiControls,
342
343 // do not add any values below/greater than this
344 CC_CustomBase = 0xf0000000
345 };
346 Q_ENUM(ComplexControl)
347
348 enum SubControl {
349 SC_None = 0x00000000,
350
351 SC_ScrollBarAddLine = 0x00000001,
352 SC_ScrollBarSubLine = 0x00000002,
353 SC_ScrollBarAddPage = 0x00000004,
354 SC_ScrollBarSubPage = 0x00000008,
355 SC_ScrollBarFirst = 0x00000010,
356 SC_ScrollBarLast = 0x00000020,
357 SC_ScrollBarSlider = 0x00000040,
358 SC_ScrollBarGroove = 0x00000080,
359
360 SC_SpinBoxUp = 0x00000001,
361 SC_SpinBoxDown = 0x00000002,
362 SC_SpinBoxFrame = 0x00000004,
363 SC_SpinBoxEditField = 0x00000008,
364
365 SC_ComboBoxFrame = 0x00000001,
366 SC_ComboBoxEditField = 0x00000002,
367 SC_ComboBoxArrow = 0x00000004,
368 SC_ComboBoxListBoxPopup = 0x00000008,
369
370 SC_SliderGroove = 0x00000001,
371 SC_SliderHandle = 0x00000002,
372 SC_SliderTickmarks = 0x00000004,
373
374 SC_ToolButton = 0x00000001,
375 SC_ToolButtonMenu = 0x00000002,
376
377 SC_TitleBarSysMenu = 0x00000001,
378 SC_TitleBarMinButton = 0x00000002,
379 SC_TitleBarMaxButton = 0x00000004,
380 SC_TitleBarCloseButton = 0x00000008,
381 SC_TitleBarNormalButton = 0x00000010,
382 SC_TitleBarShadeButton = 0x00000020,
383 SC_TitleBarUnshadeButton = 0x00000040,
384 SC_TitleBarContextHelpButton = 0x00000080,
385 SC_TitleBarLabel = 0x00000100,
386
387 SC_DialGroove = 0x00000001,
388 SC_DialHandle = 0x00000002,
389 SC_DialTickmarks = 0x00000004,
390
391 SC_GroupBoxCheckBox = 0x00000001,
392 SC_GroupBoxLabel = 0x00000002,
393 SC_GroupBoxContents = 0x00000004,
394 SC_GroupBoxFrame = 0x00000008,
395
396 SC_MdiMinButton = 0x00000001,
397 SC_MdiNormalButton = 0x00000002,
398 SC_MdiCloseButton = 0x00000004,
399
400 SC_CustomBase = 0xf0000000,
401 SC_All = 0xffffffff
402 };
403 Q_ENUM(SubControl)
404 Q_DECLARE_FLAGS(SubControls, SubControl)
405
406
407 virtual void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p,
408 const QWidget *widget = nullptr) const = 0;
409 virtual SubControl hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt,
410 const QPoint &pt, const QWidget *widget = nullptr) const = 0;
411 virtual QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt,
412 SubControl sc, const QWidget *widget = nullptr) const = 0;
413
414 enum PixelMetric {
415 PM_ButtonMargin,
416 PM_ButtonDefaultIndicator,
417 PM_MenuButtonIndicator,
418 PM_ButtonShiftHorizontal,
419 PM_ButtonShiftVertical,
420
421 PM_DefaultFrameWidth,
422 PM_SpinBoxFrameWidth,
423 PM_ComboBoxFrameWidth,
424
425 PM_MaximumDragDistance,
426
427 PM_ScrollBarExtent,
428 PM_ScrollBarSliderMin,
429
430 PM_SliderThickness, // total slider thickness
431 PM_SliderControlThickness, // thickness of the business part
432 PM_SliderLength, // total length of slider
433 PM_SliderTickmarkOffset, //
434 PM_SliderSpaceAvailable, // available space for slider to move
435
436 PM_DockWidgetSeparatorExtent,
437 PM_DockWidgetHandleExtent,
438 PM_DockWidgetFrameWidth,
439
440 PM_TabBarTabOverlap,
441 PM_TabBarTabHSpace,
442 PM_TabBarTabVSpace,
443 PM_TabBarBaseHeight,
444 PM_TabBarBaseOverlap,
445
446 PM_ProgressBarChunkWidth,
447
448 PM_SplitterWidth,
449 PM_TitleBarHeight,
450
451 PM_MenuScrollerHeight,
452 PM_MenuHMargin,
453 PM_MenuVMargin,
454 PM_MenuPanelWidth,
455 PM_MenuTearoffHeight,
456 PM_MenuDesktopFrameWidth,
457
458 PM_MenuBarPanelWidth,
459 PM_MenuBarItemSpacing,
460 PM_MenuBarVMargin,
461 PM_MenuBarHMargin,
462
463 PM_IndicatorWidth,
464 PM_IndicatorHeight,
465 PM_ExclusiveIndicatorWidth,
466 PM_ExclusiveIndicatorHeight,
467
468#if QT_DEPRECATED_SINCE(6, 8)
469 PM_DialogButtonsSeparator Q_DECL_ENUMERATOR_DEPRECATED_X("Not used and no effect since Qt 4"),
470 PM_DialogButtonsButtonWidth Q_DECL_ENUMERATOR_DEPRECATED_X("Not used and no effect since Qt 4"),
471 PM_DialogButtonsButtonHeight Q_DECL_ENUMERATOR_DEPRECATED_X("Not used and no effect since Qt 4"),
472#endif
473
474 PM_MdiSubWindowFrameWidth = 44,
475 PM_MdiSubWindowMinimizedWidth,
476
477 PM_HeaderMargin,
478 PM_HeaderMarkSize,
479 PM_HeaderGripMargin,
480 PM_TabBarTabShiftHorizontal,
481 PM_TabBarTabShiftVertical,
482 PM_TabBarScrollButtonWidth,
483
484 PM_ToolBarFrameWidth,
485 PM_ToolBarHandleExtent,
486 PM_ToolBarItemSpacing,
487 PM_ToolBarItemMargin,
488 PM_ToolBarSeparatorExtent,
489 PM_ToolBarExtensionExtent,
490
491 PM_SpinBoxSliderHeight,
492
493 PM_ToolBarIconSize,
494 PM_ListViewIconSize,
495 PM_IconViewIconSize,
496 PM_SmallIconSize,
497 PM_LargeIconSize,
498
499 PM_FocusFrameVMargin,
500 PM_FocusFrameHMargin,
501
502 PM_ToolTipLabelFrameWidth,
503 PM_CheckBoxLabelSpacing,
504 PM_TabBarIconSize,
505 PM_SizeGripSize,
506 PM_DockWidgetTitleMargin,
507 PM_MessageBoxIconSize,
508 PM_ButtonIconSize,
509
510 PM_DockWidgetTitleBarButtonMargin,
511
512 PM_RadioButtonLabelSpacing,
513 PM_LayoutLeftMargin,
514 PM_LayoutTopMargin,
515 PM_LayoutRightMargin,
516 PM_LayoutBottomMargin,
517 PM_LayoutHorizontalSpacing,
518 PM_LayoutVerticalSpacing,
519 PM_TabBar_ScrollButtonOverlap,
520
521 PM_TextCursorWidth,
522
523 PM_TabCloseIndicatorWidth,
524 PM_TabCloseIndicatorHeight,
525
526 PM_ScrollView_ScrollBarSpacing,
527 PM_ScrollView_ScrollBarOverlap,
528 PM_SubMenuOverlap,
529 PM_TreeViewIndentation,
530
531 PM_HeaderDefaultSectionSizeHorizontal,
532 PM_HeaderDefaultSectionSizeVertical,
533
534 PM_TitleBarButtonIconSize,
535 PM_TitleBarButtonSize,
536
537 PM_LineEditIconSize,
538 PM_LineEditIconMargin,
539 // do not add any values below/greater than this
540 PM_CustomBase = 0xf0000000
541 };
542 Q_ENUM(PixelMetric)
543
544 virtual int pixelMetric(PixelMetric metric, const QStyleOption *option = nullptr,
545 const QWidget *widget = nullptr) const = 0;
546
547 enum ContentsType {
548 CT_PushButton,
549 CT_CheckBox,
550 CT_RadioButton,
551 CT_ToolButton,
552 CT_ComboBox,
553 CT_Splitter,
554 CT_ProgressBar,
555 CT_MenuItem,
556 CT_MenuBarItem,
557 CT_MenuBar,
558 CT_Menu,
559 CT_TabBarTab,
560 CT_Slider,
561 CT_ScrollBar,
562 CT_LineEdit,
563 CT_SpinBox,
564 CT_SizeGrip,
565 CT_TabWidget,
566 CT_DialogButtons,
567 CT_HeaderSection,
568 CT_GroupBox,
569 CT_MdiControls,
570 CT_ItemViewItem,
571 // do not add any values below/greater than this
572 CT_CustomBase = 0xf0000000
573 };
574 Q_ENUM(ContentsType)
575
576 virtual QSize sizeFromContents(ContentsType ct, const QStyleOption *opt,
577 const QSize &contentsSize, const QWidget *w = nullptr) const = 0;
578
579 enum RequestSoftwareInputPanel {
580 RSIP_OnMouseClickAndAlreadyFocused,
581 RSIP_OnMouseClick
582 };
583 Q_ENUM(RequestSoftwareInputPanel)
584
585 enum StyleHint {
586 SH_EtchDisabledText,
587 SH_DitherDisabledText,
588 SH_ScrollBar_MiddleClickAbsolutePosition,
589 SH_ScrollBar_ScrollWhenPointerLeavesControl,
590 SH_TabBar_SelectMouseType,
591 SH_TabBar_Alignment,
592 SH_Header_ArrowAlignment,
593 SH_Slider_SnapToValue,
594 SH_Slider_SloppyKeyEvents,
595 SH_ProgressDialog_CenterCancelButton,
596 SH_ProgressDialog_TextLabelAlignment,
597 SH_PrintDialog_RightAlignButtons,
598 SH_MainWindow_SpaceBelowMenuBar,
599 SH_FontDialog_SelectAssociatedText,
600 SH_Menu_AllowActiveAndDisabled,
601 SH_Menu_SpaceActivatesItem,
602 SH_Menu_SubMenuPopupDelay,
603 SH_ScrollView_FrameOnlyAroundContents,
604 SH_MenuBar_AltKeyNavigation,
605 SH_ComboBox_ListMouseTracking,
606 SH_ComboBox_ListMouseTracking_Current = SH_ComboBox_ListMouseTracking,
607 SH_Menu_MouseTracking,
608 SH_MenuBar_MouseTracking,
609 SH_ItemView_ChangeHighlightOnFocus,
610 SH_Widget_ShareActivation,
611 SH_Workspace_FillSpaceOnMaximize,
612 SH_ComboBox_Popup,
613 SH_TitleBar_NoBorder,
614 SH_Slider_StopMouseOverSlider,
615 SH_BlinkCursorWhenTextSelected,
616 SH_RichText_FullWidthSelection,
617 SH_Menu_Scrollable,
618 SH_GroupBox_TextLabelVerticalAlignment,
619 SH_GroupBox_TextLabelColor,
620 SH_Menu_SloppySubMenus,
621 SH_Table_GridLineColor,
622 SH_LineEdit_PasswordCharacter,
623 SH_DialogButtons_DefaultButton,
624 SH_ToolBox_SelectedPageTitleBold,
625 SH_TabBar_PreferNoArrows,
626 SH_ScrollBar_LeftClickAbsolutePosition,
627 SH_ListViewExpand_SelectMouseType,
628 SH_UnderlineShortcut,
629 SH_SpinBox_AnimateButton,
630 SH_SpinBox_KeyPressAutoRepeatRate,
631 SH_SpinBox_ClickAutoRepeatRate,
632 SH_Menu_FillScreenWithScroll,
633 SH_ToolTipLabel_Opacity,
634 SH_DrawMenuBarSeparator,
635 SH_TitleBar_ModifyNotification,
636 SH_Button_FocusPolicy,
637 SH_MessageBox_UseBorderForButtonSpacing,
638 SH_TitleBar_AutoRaise,
639 SH_ToolButton_PopupDelay,
640 SH_FocusFrame_Mask,
641 SH_RubberBand_Mask,
642 SH_WindowFrame_Mask,
643 SH_SpinControls_DisableOnBounds,
644 SH_Dial_BackgroundRole,
645 SH_ComboBox_LayoutDirection,
646 SH_ItemView_EllipsisLocation,
647 SH_ItemView_ShowDecorationSelected,
648 SH_ItemView_ActivateItemOnSingleClick,
649 SH_ScrollBar_ContextMenu,
650 SH_ScrollBar_RollBetweenButtons,
651 SH_Slider_AbsoluteSetButtons,
652 SH_Slider_PageSetButtons,
653 SH_Menu_KeyboardSearch,
654 SH_TabBar_ElideMode,
655 SH_DialogButtonLayout,
656 SH_ComboBox_PopupFrameStyle,
657 SH_MessageBox_TextInteractionFlags,
658 SH_DialogButtonBox_ButtonsHaveIcons,
659 SH_MessageBox_CenterButtons,
660 SH_Menu_SelectionWrap,
661 SH_ItemView_MovementWithoutUpdatingSelection,
662 SH_ToolTip_Mask,
663 SH_FocusFrame_AboveWidget,
664 SH_TextControl_FocusIndicatorTextCharFormat,
665 SH_WizardStyle,
666 SH_ItemView_ArrowKeysNavigateIntoChildren,
667 SH_Menu_Mask,
668 SH_Menu_FlashTriggeredItem,
669 SH_Menu_FadeOutOnHide,
670 SH_SpinBox_ClickAutoRepeatThreshold,
671 SH_ItemView_PaintAlternatingRowColorsForEmptyArea,
672 SH_FormLayoutWrapPolicy,
673 SH_TabWidget_DefaultTabPosition,
674 SH_ToolBar_Movable,
675 SH_FormLayoutFieldGrowthPolicy,
676 SH_FormLayoutFormAlignment,
677 SH_FormLayoutLabelAlignment,
678 SH_ItemView_DrawDelegateFrame,
679 SH_TabBar_CloseButtonPosition,
680 SH_DockWidget_ButtonsHaveFrame,
681 SH_ToolButtonStyle,
682 SH_RequestSoftwareInputPanel,
683 SH_ScrollBar_Transient,
684 SH_Menu_SupportsSections,
685 SH_ToolTip_WakeUpDelay,
686 SH_ToolTip_FallAsleepDelay,
687 SH_Widget_Animate,
688 SH_Splitter_OpaqueResize,
689 // Whether we should use a native popup.
690 // Only supported for non-editable combo boxes on Mac OS X so far.
691 SH_ComboBox_UseNativePopup,
692 SH_LineEdit_PasswordMaskDelay,
693 SH_TabBar_ChangeCurrentDelay,
694 SH_Menu_SubMenuUniDirection,
695 SH_Menu_SubMenuUniDirectionFailCount,
696 SH_Menu_SubMenuSloppySelectOtherActions,
697 SH_Menu_SubMenuSloppyCloseTimeout,
698 SH_Menu_SubMenuResetWhenReenteringParent,
699 SH_Menu_SubMenuDontStartSloppyOnLeave,
700 SH_ItemView_ScrollMode,
701 SH_TitleBar_ShowToolTipsOnButtons,
702 SH_Widget_Animation_Duration,
703 SH_ComboBox_AllowWheelScrolling,
704 SH_SpinBox_ButtonsInsideFrame,
705 SH_SpinBox_StepModifier,
706 SH_TabBar_AllowWheelScrolling,
707 SH_Table_AlwaysDrawLeftTopGridLines,
708 SH_SpinBox_SelectOnStep,
709 SH_ComboBox_ListMouseTracking_Active,
710 // Add new style hint values here
711
712 SH_CustomBase = 0xf0000000
713 };
714 Q_ENUM(StyleHint)
715
716 virtual int styleHint(StyleHint stylehint, const QStyleOption *opt = nullptr,
717 const QWidget *widget = nullptr, QStyleHintReturn* returnData = nullptr) const = 0;
718
719 enum StandardPixmap {
720 SP_TitleBarMenuButton,
721 SP_TitleBarMinButton,
722 SP_TitleBarMaxButton,
723 SP_TitleBarCloseButton,
724 SP_TitleBarNormalButton,
725 SP_TitleBarShadeButton,
726 SP_TitleBarUnshadeButton,
727 SP_TitleBarContextHelpButton,
728 SP_DockWidgetCloseButton,
729 SP_MessageBoxInformation,
730 SP_MessageBoxWarning,
731 SP_MessageBoxCritical,
732 SP_MessageBoxQuestion,
733 SP_DesktopIcon,
734 SP_TrashIcon,
735 SP_ComputerIcon,
736 SP_DriveFDIcon,
737 SP_DriveHDIcon,
738 SP_DriveCDIcon,
739 SP_DriveDVDIcon,
740 SP_DriveNetIcon,
741 SP_DirOpenIcon,
742 SP_DirClosedIcon,
743 SP_DirLinkIcon,
744 SP_DirLinkOpenIcon,
745 SP_FileIcon,
746 SP_FileLinkIcon,
747 SP_ToolBarHorizontalExtensionButton,
748 SP_ToolBarVerticalExtensionButton,
749 SP_FileDialogStart,
750 SP_FileDialogEnd,
751 SP_FileDialogToParent,
752 SP_FileDialogNewFolder,
753 SP_FileDialogDetailedView,
754 SP_FileDialogInfoView,
755 SP_FileDialogContentsView,
756 SP_FileDialogListView,
757 SP_FileDialogBack,
758 SP_DirIcon,
759 SP_DialogOkButton,
760 SP_DialogCancelButton,
761 SP_DialogHelpButton,
762 SP_DialogOpenButton,
763 SP_DialogSaveButton,
764 SP_DialogCloseButton,
765 SP_DialogApplyButton,
766 SP_DialogResetButton,
767 SP_DialogDiscardButton,
768 SP_DialogYesButton,
769 SP_DialogNoButton,
770 SP_ArrowUp,
771 SP_ArrowDown,
772 SP_ArrowLeft,
773 SP_ArrowRight,
774 SP_ArrowBack,
775 SP_ArrowForward,
776 SP_DirHomeIcon,
777 SP_CommandLink,
778 SP_VistaShield,
779 SP_BrowserReload,
780 SP_BrowserStop,
781 SP_MediaPlay,
782 SP_MediaStop,
783 SP_MediaPause,
784 SP_MediaSkipForward,
785 SP_MediaSkipBackward,
786 SP_MediaSeekForward,
787 SP_MediaSeekBackward,
788 SP_MediaVolume,
789 SP_MediaVolumeMuted,
790 SP_LineEditClearButton,
791 SP_DialogYesToAllButton,
792 SP_DialogNoToAllButton,
793 SP_DialogSaveAllButton,
794 SP_DialogAbortButton,
795 SP_DialogRetryButton,
796 SP_DialogIgnoreButton,
797 SP_RestoreDefaultsButton,
798 SP_TabCloseButton,
799 NStandardPixmap, // assertion value for sync with QPlatformTheme::StandardPixmap
800 // do not add any values below/greater than this
801 SP_CustomBase = 0xf0000000
802 };
803 Q_ENUM(StandardPixmap)
804
805 virtual QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt = nullptr,
806 const QWidget *widget = nullptr) const = 0;
807
808 virtual QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option = nullptr,
809 const QWidget *widget = nullptr) const = 0;
810
811 virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap,
812 const QStyleOption *opt) const = 0;
813
814 static QRect visualRect(Qt::LayoutDirection direction, const QRect &boundingRect,
815 const QRect &logicalRect);
816 static QPoint visualPos(Qt::LayoutDirection direction, const QRect &boundingRect,
817 const QPoint &logicalPos);
818 static int sliderPositionFromValue(int min, int max, int val, int space,
819 bool upsideDown = false);
820 static int sliderValueFromPosition(int min, int max, int pos, int space,
821 bool upsideDown = false);
822 static Qt::Alignment visualAlignment(Qt::LayoutDirection direction, Qt::Alignment alignment);
823 static QRect alignedRect(Qt::LayoutDirection direction, Qt::Alignment alignment,
824 const QSize &size, const QRect &rectangle);
825
826 virtual int layoutSpacing(QSizePolicy::ControlType control1,
827 QSizePolicy::ControlType control2, Qt::Orientation orientation,
828 const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const = 0;
829 int combinedLayoutSpacing(QSizePolicy::ControlTypes controls1,
830 QSizePolicy::ControlTypes controls2, Qt::Orientation orientation,
831 QStyleOption *option = nullptr, QWidget *widget = nullptr) const;
832
833 const QStyle * proxy() const;
834
835private:
836 void setName(const QString &name);
837
838private:
839 Q_DISABLE_COPY(QStyle)
840 friend class QWidget;
841 friend class QWidgetPrivate;
842 friend class QApplication;
843 friend class QProxyStyle;
844 friend class QProxyStylePrivate;
845 friend class QStyleFactory;
846 friend class QStyleSheetProxySaver;
847 void setProxy(QStyle *style);
848};
849
850Q_DECLARE_OPERATORS_FOR_FLAGS(QStyle::State)
851Q_DECLARE_OPERATORS_FOR_FLAGS(QStyle::SubControls)
852
853QT_END_NAMESPACE
854
855#endif // QSTYLE_H
\inmodule QtSql
The QStyle class is an abstract base class that encapsulates the look and feel of a GUI.
Definition qstyle.h:30