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