Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-07 08:49:50

0001 // Copyright (C) 2016 The Qt Company Ltd.
0002 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
0003 // Qt-Security score:significant reason:default
0004 
0005 #ifndef QSTYLE_H
0006 #define QSTYLE_H
0007 
0008 #include <QtWidgets/qtwidgetsglobal.h>
0009 #include <QtCore/qobject.h>
0010 #include <QtCore/qrect.h>
0011 #include <QtCore/qsize.h>
0012 #include <QtGui/qicon.h>
0013 #include <QtGui/qpixmap.h>
0014 #include <QtGui/qpalette.h>
0015 #include <QtWidgets/qsizepolicy.h>
0016 
0017 QT_BEGIN_NAMESPACE
0018 
0019 
0020 class QAction;
0021 class QDebug;
0022 class QTab;
0023 class QFontMetrics;
0024 class QStyleHintReturn;
0025 class QStyleOption;
0026 class QStyleOptionComplex;
0027 class QStylePrivate;
0028 
0029 class Q_WIDGETS_EXPORT QStyle : public QObject
0030 {
0031     Q_OBJECT
0032     Q_DECLARE_PRIVATE(QStyle)
0033 
0034 protected:
0035     QStyle(QStylePrivate &dd);
0036 
0037 public:
0038     QStyle();
0039     virtual ~QStyle();
0040 
0041     QString name() const;
0042 
0043     virtual void polish(QWidget *widget);
0044     virtual void unpolish(QWidget *widget);
0045 
0046     virtual void polish(QApplication *application);
0047     virtual void unpolish(QApplication *application);
0048 
0049     virtual void polish(QPalette &palette);
0050 
0051     virtual QRect itemTextRect(const QFontMetrics &fm, const QRect &r,
0052                            int flags, bool enabled,
0053                            const QString &text) const;
0054 
0055     virtual QRect itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const;
0056 
0057     virtual void drawItemText(QPainter *painter, const QRect &rect,
0058                               int flags, const QPalette &pal, bool enabled,
0059                               const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const;
0060 
0061     virtual void drawItemPixmap(QPainter *painter, const QRect &rect,
0062                                 int alignment, const QPixmap &pixmap) const;
0063 
0064     virtual QPalette standardPalette() const;
0065 
0066     enum StateFlag {
0067         State_None =                0x00000000,
0068         State_Enabled =             0x00000001,
0069         State_Raised =              0x00000002,
0070         State_Sunken =              0x00000004,
0071         State_Off =                 0x00000008,
0072         State_NoChange =            0x00000010,
0073         State_On =                  0x00000020,
0074         State_DownArrow =           0x00000040,
0075         State_Horizontal =          0x00000080,
0076         State_HasFocus =            0x00000100,
0077         State_Top =                 0x00000200,
0078         State_Bottom =              0x00000400,
0079         State_FocusAtBorder =       0x00000800,
0080         State_AutoRaise =           0x00001000,
0081         State_MouseOver =           0x00002000,
0082         State_UpArrow =             0x00004000,
0083         State_Selected =            0x00008000,
0084         State_Active =              0x00010000,
0085         State_Window =              0x00020000,
0086         State_Open =                0x00040000,
0087         State_Children =            0x00080000,
0088         State_Item =                0x00100000,
0089         State_Sibling =             0x00200000,
0090         State_Editing =             0x00400000,
0091         State_KeyboardFocusChange = 0x00800000,
0092 #ifdef QT_KEYPAD_NAVIGATION
0093         State_HasEditFocus =        0x01000000,
0094 #endif
0095         State_ReadOnly =            0x02000000,
0096         State_Small =               0x04000000,
0097         State_Mini =                0x08000000
0098     };
0099     Q_ENUM(StateFlag)
0100     Q_DECLARE_FLAGS(State, StateFlag)
0101 
0102 
0103     enum PrimitiveElement {
0104         PE_Frame,
0105         PE_FrameDefaultButton,
0106         PE_FrameDockWidget,
0107         PE_FrameFocusRect,
0108         PE_FrameGroupBox,
0109         PE_FrameLineEdit,
0110         PE_FrameMenu,
0111         PE_FrameStatusBarItem,
0112         PE_FrameTabWidget,
0113         PE_FrameWindow,
0114         PE_FrameButtonBevel,
0115         PE_FrameButtonTool,
0116         PE_FrameTabBarBase,
0117 
0118         PE_PanelButtonCommand,
0119         PE_PanelButtonBevel,
0120         PE_PanelButtonTool,
0121         PE_PanelMenuBar,
0122         PE_PanelToolBar,
0123         PE_PanelLineEdit,
0124 
0125         PE_IndicatorArrowDown,
0126         PE_IndicatorArrowLeft,
0127         PE_IndicatorArrowRight,
0128         PE_IndicatorArrowUp,
0129         PE_IndicatorBranch,
0130         PE_IndicatorButtonDropDown,
0131         PE_IndicatorItemViewItemCheck,
0132         PE_IndicatorCheckBox,
0133         PE_IndicatorDockWidgetResizeHandle,
0134         PE_IndicatorHeaderArrow,
0135         PE_IndicatorMenuCheckMark,
0136         PE_IndicatorProgressChunk,
0137         PE_IndicatorRadioButton,
0138         PE_IndicatorSpinDown,
0139         PE_IndicatorSpinMinus,
0140         PE_IndicatorSpinPlus,
0141         PE_IndicatorSpinUp,
0142         PE_IndicatorToolBarHandle,
0143         PE_IndicatorToolBarSeparator,
0144         PE_PanelTipLabel,
0145         PE_IndicatorTabTear,
0146         PE_IndicatorTabTearLeft = PE_IndicatorTabTear,
0147         PE_PanelScrollAreaCorner,
0148 
0149         PE_Widget,
0150 
0151         PE_IndicatorColumnViewArrow,
0152         PE_IndicatorItemViewItemDrop,
0153 
0154         PE_PanelItemViewItem,
0155         PE_PanelItemViewRow,
0156 
0157         PE_PanelStatusBar,
0158 
0159         PE_IndicatorTabClose,
0160         PE_PanelMenu,
0161 
0162         PE_IndicatorTabTearRight,
0163 
0164         // do not add any values below/greater this
0165         PE_CustomBase = 0xf000000
0166     };
0167     Q_ENUM(PrimitiveElement)
0168 
0169     virtual void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p,
0170                                const QWidget *w = nullptr) const = 0;
0171     enum ControlElement {
0172         CE_PushButton,
0173         CE_PushButtonBevel,
0174         CE_PushButtonLabel,
0175 
0176         CE_CheckBox,
0177         CE_CheckBoxLabel,
0178 
0179         CE_RadioButton,
0180         CE_RadioButtonLabel,
0181 
0182         CE_TabBarTab,
0183         CE_TabBarTabShape,
0184         CE_TabBarTabLabel,
0185 
0186         CE_ProgressBar,
0187         CE_ProgressBarGroove,
0188         CE_ProgressBarContents,
0189         CE_ProgressBarLabel,
0190 
0191         CE_MenuItem,
0192         CE_MenuScroller,
0193         CE_MenuVMargin,
0194         CE_MenuHMargin,
0195         CE_MenuTearoff,
0196         CE_MenuEmptyArea,
0197 
0198         CE_MenuBarItem,
0199         CE_MenuBarEmptyArea,
0200 
0201         CE_ToolButtonLabel,
0202 
0203         CE_Header,
0204         CE_HeaderSection,
0205         CE_HeaderLabel,
0206 
0207         CE_ToolBoxTab,
0208         CE_SizeGrip,
0209         CE_Splitter,
0210         CE_RubberBand,
0211         CE_DockWidgetTitle,
0212 
0213         CE_ScrollBarAddLine,
0214         CE_ScrollBarSubLine,
0215         CE_ScrollBarAddPage,
0216         CE_ScrollBarSubPage,
0217         CE_ScrollBarSlider,
0218         CE_ScrollBarFirst,
0219         CE_ScrollBarLast,
0220 
0221         CE_FocusFrame,
0222         CE_ComboBoxLabel,
0223 
0224         CE_ToolBar,
0225         CE_ToolBoxTabShape,
0226         CE_ToolBoxTabLabel,
0227         CE_HeaderEmptyArea,
0228 
0229         CE_ColumnViewGrip,
0230 
0231         CE_ItemViewItem,
0232 
0233         CE_ShapedFrame,
0234 
0235         // do not add any values below/greater than this
0236         CE_CustomBase = 0xf0000000
0237     };
0238     Q_ENUM(ControlElement)
0239 
0240     virtual void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p,
0241                              const QWidget *w = nullptr) const = 0;
0242 
0243     enum SubElement {
0244         SE_PushButtonContents,
0245         SE_PushButtonFocusRect,
0246 
0247         SE_CheckBoxIndicator,
0248         SE_CheckBoxContents,
0249         SE_CheckBoxFocusRect,
0250         SE_CheckBoxClickRect,
0251 
0252         SE_RadioButtonIndicator,
0253         SE_RadioButtonContents,
0254         SE_RadioButtonFocusRect,
0255         SE_RadioButtonClickRect,
0256 
0257         SE_ComboBoxFocusRect,
0258 
0259         SE_SliderFocusRect,
0260 
0261         SE_ProgressBarGroove,
0262         SE_ProgressBarContents,
0263         SE_ProgressBarLabel,
0264 
0265         SE_ToolBoxTabContents,
0266 
0267         SE_HeaderLabel,
0268         SE_HeaderArrow,
0269 
0270         SE_TabWidgetTabBar,
0271         SE_TabWidgetTabPane,
0272         SE_TabWidgetTabContents,
0273         SE_TabWidgetLeftCorner,
0274         SE_TabWidgetRightCorner,
0275 
0276         SE_ItemViewItemCheckIndicator,
0277         SE_TabBarTearIndicator,
0278         SE_TabBarTearIndicatorLeft = SE_TabBarTearIndicator,
0279 
0280         SE_TreeViewDisclosureItem,
0281 
0282         SE_LineEditContents,
0283         SE_FrameContents,
0284 
0285         SE_DockWidgetCloseButton,
0286         SE_DockWidgetFloatButton,
0287         SE_DockWidgetTitleBarText,
0288         SE_DockWidgetIcon,
0289 
0290         SE_CheckBoxLayoutItem,
0291         SE_ComboBoxLayoutItem,
0292         SE_DateTimeEditLayoutItem,
0293         SE_LabelLayoutItem,
0294         SE_ProgressBarLayoutItem,
0295         SE_PushButtonLayoutItem,
0296         SE_RadioButtonLayoutItem,
0297         SE_SliderLayoutItem,
0298         SE_SpinBoxLayoutItem,
0299         SE_ToolButtonLayoutItem,
0300 
0301         SE_FrameLayoutItem,
0302         SE_GroupBoxLayoutItem,
0303         SE_TabWidgetLayoutItem,
0304 
0305         SE_ItemViewItemDecoration,
0306         SE_ItemViewItemText,
0307         SE_ItemViewItemFocusRect,
0308 
0309         SE_TabBarTabLeftButton,
0310         SE_TabBarTabRightButton,
0311         SE_TabBarTabText,
0312 
0313         SE_ShapedFrameContents,
0314 
0315         SE_ToolBarHandle,
0316 
0317         SE_TabBarScrollLeftButton,
0318         SE_TabBarScrollRightButton,
0319         SE_TabBarTearIndicatorRight,
0320 
0321         SE_PushButtonBevel,
0322 
0323         // do not add any values below/greater than this
0324         SE_CustomBase = 0xf0000000
0325     };
0326     Q_ENUM(SubElement)
0327 
0328     virtual QRect subElementRect(SubElement subElement, const QStyleOption *option,
0329                                  const QWidget *widget = nullptr) const = 0;
0330 
0331 
0332     enum ComplexControl {
0333         CC_SpinBox,
0334         CC_ComboBox,
0335         CC_ScrollBar,
0336         CC_Slider,
0337         CC_ToolButton,
0338         CC_TitleBar,
0339         CC_Dial,
0340         CC_GroupBox,
0341         CC_MdiControls,
0342 
0343         // do not add any values below/greater than this
0344         CC_CustomBase = 0xf0000000
0345     };
0346     Q_ENUM(ComplexControl)
0347 
0348     enum SubControl {
0349         SC_None =                  0x00000000,
0350 
0351         SC_ScrollBarAddLine =      0x00000001,
0352         SC_ScrollBarSubLine =      0x00000002,
0353         SC_ScrollBarAddPage =      0x00000004,
0354         SC_ScrollBarSubPage =      0x00000008,
0355         SC_ScrollBarFirst =        0x00000010,
0356         SC_ScrollBarLast =         0x00000020,
0357         SC_ScrollBarSlider =       0x00000040,
0358         SC_ScrollBarGroove =       0x00000080,
0359 
0360         SC_SpinBoxUp =             0x00000001,
0361         SC_SpinBoxDown =           0x00000002,
0362         SC_SpinBoxFrame =          0x00000004,
0363         SC_SpinBoxEditField =      0x00000008,
0364 
0365         SC_ComboBoxFrame =         0x00000001,
0366         SC_ComboBoxEditField =     0x00000002,
0367         SC_ComboBoxArrow =         0x00000004,
0368         SC_ComboBoxListBoxPopup =  0x00000008,
0369 
0370         SC_SliderGroove =          0x00000001,
0371         SC_SliderHandle =          0x00000002,
0372         SC_SliderTickmarks =       0x00000004,
0373 
0374         SC_ToolButton =            0x00000001,
0375         SC_ToolButtonMenu =        0x00000002,
0376 
0377         SC_TitleBarSysMenu =       0x00000001,
0378         SC_TitleBarMinButton =     0x00000002,
0379         SC_TitleBarMaxButton =     0x00000004,
0380         SC_TitleBarCloseButton =   0x00000008,
0381         SC_TitleBarNormalButton =  0x00000010,
0382         SC_TitleBarShadeButton =   0x00000020,
0383         SC_TitleBarUnshadeButton = 0x00000040,
0384         SC_TitleBarContextHelpButton = 0x00000080,
0385         SC_TitleBarLabel =         0x00000100,
0386 
0387         SC_DialGroove =            0x00000001,
0388         SC_DialHandle =            0x00000002,
0389         SC_DialTickmarks =         0x00000004,
0390 
0391         SC_GroupBoxCheckBox =      0x00000001,
0392         SC_GroupBoxLabel =         0x00000002,
0393         SC_GroupBoxContents =      0x00000004,
0394         SC_GroupBoxFrame =         0x00000008,
0395 
0396         SC_MdiMinButton     =      0x00000001,
0397         SC_MdiNormalButton  =      0x00000002,
0398         SC_MdiCloseButton   =      0x00000004,
0399 
0400         SC_CustomBase =            0xf0000000,
0401         SC_All =                   0xffffffff
0402     };
0403     Q_ENUM(SubControl)
0404     Q_DECLARE_FLAGS(SubControls, SubControl)
0405 
0406 
0407     virtual void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p,
0408                                     const QWidget *widget = nullptr) const = 0;
0409     virtual SubControl hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt,
0410                                              const QPoint &pt, const QWidget *widget = nullptr) const = 0;
0411     virtual QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt,
0412                                  SubControl sc, const QWidget *widget = nullptr) const = 0;
0413 
0414     enum PixelMetric {
0415         PM_ButtonMargin,
0416         PM_ButtonDefaultIndicator,
0417         PM_MenuButtonIndicator,
0418         PM_ButtonShiftHorizontal,
0419         PM_ButtonShiftVertical,
0420 
0421         PM_DefaultFrameWidth,
0422         PM_SpinBoxFrameWidth,
0423         PM_ComboBoxFrameWidth,
0424 
0425         PM_MaximumDragDistance,
0426 
0427         PM_ScrollBarExtent,
0428         PM_ScrollBarSliderMin,
0429 
0430         PM_SliderThickness,             // total slider thickness
0431         PM_SliderControlThickness,      // thickness of the business part
0432         PM_SliderLength,                // total length of slider
0433         PM_SliderTickmarkOffset,        //
0434         PM_SliderSpaceAvailable,        // available space for slider to move
0435 
0436         PM_DockWidgetSeparatorExtent,
0437         PM_DockWidgetHandleExtent,
0438         PM_DockWidgetFrameWidth,
0439 
0440         PM_TabBarTabOverlap,
0441         PM_TabBarTabHSpace,
0442         PM_TabBarTabVSpace,
0443         PM_TabBarBaseHeight,
0444         PM_TabBarBaseOverlap,
0445 
0446         PM_ProgressBarChunkWidth,
0447 
0448         PM_SplitterWidth,
0449         PM_TitleBarHeight,
0450 
0451         PM_MenuScrollerHeight,
0452         PM_MenuHMargin,
0453         PM_MenuVMargin,
0454         PM_MenuPanelWidth,
0455         PM_MenuTearoffHeight,
0456         PM_MenuDesktopFrameWidth,
0457 
0458         PM_MenuBarPanelWidth,
0459         PM_MenuBarItemSpacing,
0460         PM_MenuBarVMargin,
0461         PM_MenuBarHMargin,
0462 
0463         PM_IndicatorWidth,
0464         PM_IndicatorHeight,
0465         PM_ExclusiveIndicatorWidth,
0466         PM_ExclusiveIndicatorHeight,
0467 
0468 #if QT_DEPRECATED_SINCE(6, 8)
0469         PM_DialogButtonsSeparator Q_DECL_ENUMERATOR_DEPRECATED_X("Not used and no effect since Qt 4"),
0470         PM_DialogButtonsButtonWidth Q_DECL_ENUMERATOR_DEPRECATED_X("Not used and no effect since Qt 4"),
0471         PM_DialogButtonsButtonHeight Q_DECL_ENUMERATOR_DEPRECATED_X("Not used and no effect since Qt 4"),
0472 #endif
0473 
0474         PM_MdiSubWindowFrameWidth = 44,
0475         PM_MdiSubWindowMinimizedWidth,
0476 
0477         PM_HeaderMargin,
0478         PM_HeaderMarkSize,
0479         PM_HeaderGripMargin,
0480         PM_TabBarTabShiftHorizontal,
0481         PM_TabBarTabShiftVertical,
0482         PM_TabBarScrollButtonWidth,
0483 
0484         PM_ToolBarFrameWidth,
0485         PM_ToolBarHandleExtent,
0486         PM_ToolBarItemSpacing,
0487         PM_ToolBarItemMargin,
0488         PM_ToolBarSeparatorExtent,
0489         PM_ToolBarExtensionExtent,
0490 
0491         PM_SpinBoxSliderHeight,
0492 
0493         PM_ToolBarIconSize,
0494         PM_ListViewIconSize,
0495         PM_IconViewIconSize,
0496         PM_SmallIconSize,
0497         PM_LargeIconSize,
0498 
0499         PM_FocusFrameVMargin,
0500         PM_FocusFrameHMargin,
0501 
0502         PM_ToolTipLabelFrameWidth,
0503         PM_CheckBoxLabelSpacing,
0504         PM_TabBarIconSize,
0505         PM_SizeGripSize,
0506         PM_DockWidgetTitleMargin,
0507         PM_MessageBoxIconSize,
0508         PM_ButtonIconSize,
0509 
0510         PM_DockWidgetTitleBarButtonMargin,
0511 
0512         PM_RadioButtonLabelSpacing,
0513         PM_LayoutLeftMargin,
0514         PM_LayoutTopMargin,
0515         PM_LayoutRightMargin,
0516         PM_LayoutBottomMargin,
0517         PM_LayoutHorizontalSpacing,
0518         PM_LayoutVerticalSpacing,
0519         PM_TabBar_ScrollButtonOverlap,
0520 
0521         PM_TextCursorWidth,
0522 
0523         PM_TabCloseIndicatorWidth,
0524         PM_TabCloseIndicatorHeight,
0525 
0526         PM_ScrollView_ScrollBarSpacing,
0527         PM_ScrollView_ScrollBarOverlap,
0528         PM_SubMenuOverlap,
0529         PM_TreeViewIndentation,
0530 
0531         PM_HeaderDefaultSectionSizeHorizontal,
0532         PM_HeaderDefaultSectionSizeVertical,
0533 
0534         PM_TitleBarButtonIconSize,
0535         PM_TitleBarButtonSize,
0536 
0537         PM_LineEditIconSize,
0538         PM_LineEditIconMargin,
0539         // do not add any values below/greater than this
0540         PM_CustomBase = 0xf0000000
0541     };
0542     Q_ENUM(PixelMetric)
0543 
0544     virtual int pixelMetric(PixelMetric metric, const QStyleOption *option = nullptr,
0545                             const QWidget *widget = nullptr) const = 0;
0546 
0547     enum ContentsType {
0548         CT_PushButton,
0549         CT_CheckBox,
0550         CT_RadioButton,
0551         CT_ToolButton,
0552         CT_ComboBox,
0553         CT_Splitter,
0554         CT_ProgressBar,
0555         CT_MenuItem,
0556         CT_MenuBarItem,
0557         CT_MenuBar,
0558         CT_Menu,
0559         CT_TabBarTab,
0560         CT_Slider,
0561         CT_ScrollBar,
0562         CT_LineEdit,
0563         CT_SpinBox,
0564         CT_SizeGrip,
0565         CT_TabWidget,
0566         CT_DialogButtons,
0567         CT_HeaderSection,
0568         CT_GroupBox,
0569         CT_MdiControls,
0570         CT_ItemViewItem,
0571         // do not add any values below/greater than this
0572         CT_CustomBase = 0xf0000000
0573     };
0574     Q_ENUM(ContentsType)
0575 
0576     virtual QSize sizeFromContents(ContentsType ct, const QStyleOption *opt,
0577                                    const QSize &contentsSize, const QWidget *w = nullptr) const = 0;
0578 
0579     enum RequestSoftwareInputPanel {
0580         RSIP_OnMouseClickAndAlreadyFocused,
0581         RSIP_OnMouseClick
0582     };
0583     Q_ENUM(RequestSoftwareInputPanel)
0584 
0585     enum StyleHint {
0586         SH_EtchDisabledText,
0587         SH_DitherDisabledText,
0588         SH_ScrollBar_MiddleClickAbsolutePosition,
0589         SH_ScrollBar_ScrollWhenPointerLeavesControl,
0590         SH_TabBar_SelectMouseType,
0591         SH_TabBar_Alignment,
0592         SH_Header_ArrowAlignment,
0593         SH_Slider_SnapToValue,
0594         SH_Slider_SloppyKeyEvents,
0595         SH_ProgressDialog_CenterCancelButton,
0596         SH_ProgressDialog_TextLabelAlignment,
0597         SH_PrintDialog_RightAlignButtons,
0598         SH_MainWindow_SpaceBelowMenuBar,
0599         SH_FontDialog_SelectAssociatedText,
0600         SH_Menu_AllowActiveAndDisabled,
0601         SH_Menu_SpaceActivatesItem,
0602         SH_Menu_SubMenuPopupDelay,
0603         SH_ScrollView_FrameOnlyAroundContents,
0604         SH_MenuBar_AltKeyNavigation,
0605         SH_ComboBox_ListMouseTracking,
0606         SH_Menu_MouseTracking,
0607         SH_MenuBar_MouseTracking,
0608         SH_ItemView_ChangeHighlightOnFocus,
0609         SH_Widget_ShareActivation,
0610         SH_Workspace_FillSpaceOnMaximize,
0611         SH_ComboBox_Popup,
0612         SH_TitleBar_NoBorder,
0613         SH_Slider_StopMouseOverSlider,
0614         SH_BlinkCursorWhenTextSelected,
0615         SH_RichText_FullWidthSelection,
0616         SH_Menu_Scrollable,
0617         SH_GroupBox_TextLabelVerticalAlignment,
0618         SH_GroupBox_TextLabelColor,
0619         SH_Menu_SloppySubMenus,
0620         SH_Table_GridLineColor,
0621         SH_LineEdit_PasswordCharacter,
0622         SH_DialogButtons_DefaultButton,
0623         SH_ToolBox_SelectedPageTitleBold,
0624         SH_TabBar_PreferNoArrows,
0625         SH_ScrollBar_LeftClickAbsolutePosition,
0626         SH_ListViewExpand_SelectMouseType,
0627         SH_UnderlineShortcut,
0628         SH_SpinBox_AnimateButton,
0629         SH_SpinBox_KeyPressAutoRepeatRate,
0630         SH_SpinBox_ClickAutoRepeatRate,
0631         SH_Menu_FillScreenWithScroll,
0632         SH_ToolTipLabel_Opacity,
0633         SH_DrawMenuBarSeparator,
0634         SH_TitleBar_ModifyNotification,
0635         SH_Button_FocusPolicy,
0636         SH_MessageBox_UseBorderForButtonSpacing,
0637         SH_TitleBar_AutoRaise,
0638         SH_ToolButton_PopupDelay,
0639         SH_FocusFrame_Mask,
0640         SH_RubberBand_Mask,
0641         SH_WindowFrame_Mask,
0642         SH_SpinControls_DisableOnBounds,
0643         SH_Dial_BackgroundRole,
0644         SH_ComboBox_LayoutDirection,
0645         SH_ItemView_EllipsisLocation,
0646         SH_ItemView_ShowDecorationSelected,
0647         SH_ItemView_ActivateItemOnSingleClick,
0648         SH_ScrollBar_ContextMenu,
0649         SH_ScrollBar_RollBetweenButtons,
0650         SH_Slider_AbsoluteSetButtons,
0651         SH_Slider_PageSetButtons,
0652         SH_Menu_KeyboardSearch,
0653         SH_TabBar_ElideMode,
0654         SH_DialogButtonLayout,
0655         SH_ComboBox_PopupFrameStyle,
0656         SH_MessageBox_TextInteractionFlags,
0657         SH_DialogButtonBox_ButtonsHaveIcons,
0658         SH_MessageBox_CenterButtons,
0659         SH_Menu_SelectionWrap,
0660         SH_ItemView_MovementWithoutUpdatingSelection,
0661         SH_ToolTip_Mask,
0662         SH_FocusFrame_AboveWidget,
0663         SH_TextControl_FocusIndicatorTextCharFormat,
0664         SH_WizardStyle,
0665         SH_ItemView_ArrowKeysNavigateIntoChildren,
0666         SH_Menu_Mask,
0667         SH_Menu_FlashTriggeredItem,
0668         SH_Menu_FadeOutOnHide,
0669         SH_SpinBox_ClickAutoRepeatThreshold,
0670         SH_ItemView_PaintAlternatingRowColorsForEmptyArea,
0671         SH_FormLayoutWrapPolicy,
0672         SH_TabWidget_DefaultTabPosition,
0673         SH_ToolBar_Movable,
0674         SH_FormLayoutFieldGrowthPolicy,
0675         SH_FormLayoutFormAlignment,
0676         SH_FormLayoutLabelAlignment,
0677         SH_ItemView_DrawDelegateFrame,
0678         SH_TabBar_CloseButtonPosition,
0679         SH_DockWidget_ButtonsHaveFrame,
0680         SH_ToolButtonStyle,
0681         SH_RequestSoftwareInputPanel,
0682         SH_ScrollBar_Transient,
0683         SH_Menu_SupportsSections,
0684         SH_ToolTip_WakeUpDelay,
0685         SH_ToolTip_FallAsleepDelay,
0686         SH_Widget_Animate,
0687         SH_Splitter_OpaqueResize,
0688         // Whether we should use a native popup.
0689         // Only supported for non-editable combo boxes on Mac OS X so far.
0690         SH_ComboBox_UseNativePopup,
0691         SH_LineEdit_PasswordMaskDelay,
0692         SH_TabBar_ChangeCurrentDelay,
0693         SH_Menu_SubMenuUniDirection,
0694         SH_Menu_SubMenuUniDirectionFailCount,
0695         SH_Menu_SubMenuSloppySelectOtherActions,
0696         SH_Menu_SubMenuSloppyCloseTimeout,
0697         SH_Menu_SubMenuResetWhenReenteringParent,
0698         SH_Menu_SubMenuDontStartSloppyOnLeave,
0699         SH_ItemView_ScrollMode,
0700         SH_TitleBar_ShowToolTipsOnButtons,
0701         SH_Widget_Animation_Duration,
0702         SH_ComboBox_AllowWheelScrolling,
0703         SH_SpinBox_ButtonsInsideFrame,
0704         SH_SpinBox_StepModifier,
0705         SH_TabBar_AllowWheelScrolling,
0706         SH_Table_AlwaysDrawLeftTopGridLines,
0707         SH_SpinBox_SelectOnStep,
0708         // Add new style hint values here
0709 
0710         SH_CustomBase = 0xf0000000
0711     };
0712     Q_ENUM(StyleHint)
0713 
0714     virtual int styleHint(StyleHint stylehint, const QStyleOption *opt = nullptr,
0715                           const QWidget *widget = nullptr, QStyleHintReturn* returnData = nullptr) const = 0;
0716 
0717     enum StandardPixmap {
0718         SP_TitleBarMenuButton,
0719         SP_TitleBarMinButton,
0720         SP_TitleBarMaxButton,
0721         SP_TitleBarCloseButton,
0722         SP_TitleBarNormalButton,
0723         SP_TitleBarShadeButton,
0724         SP_TitleBarUnshadeButton,
0725         SP_TitleBarContextHelpButton,
0726         SP_DockWidgetCloseButton,
0727         SP_MessageBoxInformation,
0728         SP_MessageBoxWarning,
0729         SP_MessageBoxCritical,
0730         SP_MessageBoxQuestion,
0731         SP_DesktopIcon,
0732         SP_TrashIcon,
0733         SP_ComputerIcon,
0734         SP_DriveFDIcon,
0735         SP_DriveHDIcon,
0736         SP_DriveCDIcon,
0737         SP_DriveDVDIcon,
0738         SP_DriveNetIcon,
0739         SP_DirOpenIcon,
0740         SP_DirClosedIcon,
0741         SP_DirLinkIcon,
0742         SP_DirLinkOpenIcon,
0743         SP_FileIcon,
0744         SP_FileLinkIcon,
0745         SP_ToolBarHorizontalExtensionButton,
0746         SP_ToolBarVerticalExtensionButton,
0747         SP_FileDialogStart,
0748         SP_FileDialogEnd,
0749         SP_FileDialogToParent,
0750         SP_FileDialogNewFolder,
0751         SP_FileDialogDetailedView,
0752         SP_FileDialogInfoView,
0753         SP_FileDialogContentsView,
0754         SP_FileDialogListView,
0755         SP_FileDialogBack,
0756         SP_DirIcon,
0757         SP_DialogOkButton,
0758         SP_DialogCancelButton,
0759         SP_DialogHelpButton,
0760         SP_DialogOpenButton,
0761         SP_DialogSaveButton,
0762         SP_DialogCloseButton,
0763         SP_DialogApplyButton,
0764         SP_DialogResetButton,
0765         SP_DialogDiscardButton,
0766         SP_DialogYesButton,
0767         SP_DialogNoButton,
0768         SP_ArrowUp,
0769         SP_ArrowDown,
0770         SP_ArrowLeft,
0771         SP_ArrowRight,
0772         SP_ArrowBack,
0773         SP_ArrowForward,
0774         SP_DirHomeIcon,
0775         SP_CommandLink,
0776         SP_VistaShield,
0777         SP_BrowserReload,
0778         SP_BrowserStop,
0779         SP_MediaPlay,
0780         SP_MediaStop,
0781         SP_MediaPause,
0782         SP_MediaSkipForward,
0783         SP_MediaSkipBackward,
0784         SP_MediaSeekForward,
0785         SP_MediaSeekBackward,
0786         SP_MediaVolume,
0787         SP_MediaVolumeMuted,
0788         SP_LineEditClearButton,
0789         SP_DialogYesToAllButton,
0790         SP_DialogNoToAllButton,
0791         SP_DialogSaveAllButton,
0792         SP_DialogAbortButton,
0793         SP_DialogRetryButton,
0794         SP_DialogIgnoreButton,
0795         SP_RestoreDefaultsButton,
0796         SP_TabCloseButton,
0797         NStandardPixmap, // assertion value for sync with QPlatformTheme::StandardPixmap
0798         // do not add any values below/greater than this
0799         SP_CustomBase = 0xf0000000
0800     };
0801     Q_ENUM(StandardPixmap)
0802 
0803     virtual QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt = nullptr,
0804                                    const QWidget *widget = nullptr) const = 0;
0805 
0806     virtual QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option = nullptr,
0807                                const QWidget *widget = nullptr) const = 0;
0808 
0809     virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap,
0810                                         const QStyleOption *opt) const = 0;
0811 
0812     static QRect visualRect(Qt::LayoutDirection direction, const QRect &boundingRect,
0813                             const QRect &logicalRect);
0814     static QPoint visualPos(Qt::LayoutDirection direction, const QRect &boundingRect,
0815                             const QPoint &logicalPos);
0816     static int sliderPositionFromValue(int min, int max, int val, int space,
0817                                        bool upsideDown = false);
0818     static int sliderValueFromPosition(int min, int max, int pos, int space,
0819                                        bool upsideDown = false);
0820     static Qt::Alignment visualAlignment(Qt::LayoutDirection direction, Qt::Alignment alignment);
0821     static QRect alignedRect(Qt::LayoutDirection direction, Qt::Alignment alignment,
0822                              const QSize &size, const QRect &rectangle);
0823 
0824     virtual int layoutSpacing(QSizePolicy::ControlType control1,
0825                               QSizePolicy::ControlType control2, Qt::Orientation orientation,
0826                               const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const = 0;
0827     int combinedLayoutSpacing(QSizePolicy::ControlTypes controls1,
0828                               QSizePolicy::ControlTypes controls2, Qt::Orientation orientation,
0829                               QStyleOption *option = nullptr, QWidget *widget = nullptr) const;
0830 
0831     const QStyle * proxy() const;
0832 
0833 private:
0834     void setName(const QString &name);
0835 
0836 private:
0837     Q_DISABLE_COPY(QStyle)
0838     friend class QWidget;
0839     friend class QWidgetPrivate;
0840     friend class QApplication;
0841     friend class QProxyStyle;
0842     friend class QProxyStylePrivate;
0843     friend class QStyleFactory;
0844     friend class QStyleSheetProxySaver;
0845     void setProxy(QStyle *style);
0846 };
0847 
0848 Q_DECLARE_OPERATORS_FOR_FLAGS(QStyle::State)
0849 Q_DECLARE_OPERATORS_FOR_FLAGS(QStyle::SubControls)
0850 
0851 QT_END_NAMESPACE
0852 
0853 #endif // QSTYLE_H