Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-05 09:30:03

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