File indexing completed on 2026-05-07 08:49:50
0001
0002
0003
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
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
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
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
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,
0431 PM_SliderControlThickness,
0432 PM_SliderLength,
0433 PM_SliderTickmarkOffset,
0434 PM_SliderSpaceAvailable,
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
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
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
0689
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
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,
0798
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