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