Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qquickstyle.h
Go to the documentation of this file.
1// Copyright (C) 2020 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
4#ifndef QSTYLE_H
5#define QSTYLE_H
6
7#include <QtCore/qobject.h>
8#include <QtCore/qrect.h>
9#include <QtCore/qsize.h>
10#include <QtGui/qwindow.h>
11#include <QtGui/qicon.h>
12#include <QtGui/qpixmap.h>
13#include <QtGui/qpalette.h>
14
16
17class QAction;
18class QDebug;
19class QFontMetrics;
20
21namespace QQC2 {
22
24class QStyleOption;
26class QStylePrivate;
27
28class QStyle : public QObject
29{
31 Q_DECLARE_PRIVATE(QStyle)
32
33protected:
35
36public:
37 QStyle();
38 virtual ~QStyle();
39
40 enum StateFlag {
41 State_None = 0x00000000,
42 State_Enabled = 0x00000001,
43 State_Raised = 0x00000002,
44 State_Sunken = 0x00000004,
45 State_Off = 0x00000008,
46 State_NoChange = 0x00000010,
47 State_On = 0x00000020,
48 State_DownArrow = 0x00000040,
49 State_Horizontal = 0x00000080,
50 State_HasFocus = 0x00000100,
51 State_Top = 0x00000200,
52 State_Bottom = 0x00000400,
53 State_FocusAtBorder = 0x00000800,
54 State_AutoRaise = 0x00001000,
55 State_MouseOver = 0x00002000,
56 State_UpArrow = 0x00004000,
57 State_Selected = 0x00008000,
58 State_Active = 0x00010000,
59 State_Window = 0x00020000,
60 State_Open = 0x00040000,
61 State_Children = 0x00080000,
62 State_Item = 0x00100000,
63 State_Sibling = 0x00200000,
64 State_Editing = 0x00400000,
66#ifdef QT_KEYPAD_NAVIGATION
67 State_HasEditFocus = 0x01000000,
68#endif
69 State_ReadOnly = 0x02000000,
70 State_Small = 0x04000000,
71 State_Mini = 0x08000000
72 };
75
141
210
214
219
224
226
228
232
234
237
243
247
249
252
257
269
273
277
281
283
285
289
290 // do not add any values below/greater than this
291 SE_CustomBase = 0xf0000000
292 };
294
310
312 SC_None = 0x00000000,
313
318 SC_ScrollBarFirst = 0x00000010,
319 SC_ScrollBarLast = 0x00000020,
320 SC_ScrollBarSlider = 0x00000040,
321 SC_ScrollBarGroove = 0x00000080,
322
323 SC_SpinBoxUp = 0x00000001,
324 SC_SpinBoxDown = 0x00000002,
325 SC_SpinBoxFrame = 0x00000004,
327
328 SC_ComboBoxFrame = 0x00000001,
330 SC_ComboBoxArrow = 0x00000004,
332
333 SC_SliderGroove = 0x00000001,
334 SC_SliderHandle = 0x00000002,
335 SC_SliderTickmarks = 0x00000004,
336
337 SC_ToolButton = 0x00000001,
338 SC_ToolButtonMenu = 0x00000002,
339
340 SC_TitleBarSysMenu = 0x00000001,
348 SC_TitleBarLabel = 0x00000100,
349
350 SC_DialGroove = 0x00000001,
351 SC_DialHandle = 0x00000002,
352 SC_DialTickmarks = 0x00000004,
353
355 SC_GroupBoxLabel = 0x00000002,
357 SC_GroupBoxFrame = 0x00000008,
358
359 SC_MdiMinButton = 0x00000001,
360 SC_MdiNormalButton = 0x00000002,
361 SC_MdiCloseButton = 0x00000004,
362
363 SC_CustomBase = 0xf0000000,
364 SC_All = 0xffffffff
365 };
368
375
379
381
384
385 PM_SliderThickness, // total slider thickness
386 PM_SliderControlThickness, // thickness of the business part
387 PM_SliderLength, // total length of slider
389 PM_SliderSpaceAvailable, // available space for slider to move
390
394
400
402
405
412
417
422
426
429
436
443
445
449
455
458
466
468
477
479
482
487
490
493
503
504 // do not add any values below/greater than this
505 PM_CustomBase = 0xf0000000
506 };
508
539
545
650 // Whether we should use a native popup.
651 // Only supported for non-editable combo boxes on Mac OS X so far.
667 // Add new style hint values here
668
669 SH_CustomBase = 0xf0000000
670 };
672
752 // do not add any values below/greater than this
753 SP_CustomBase = 0xf0000000
754 };
756
757 virtual QRect itemTextRect(const QFontMetrics &fm, const QRect &r, int flags, bool enabled, const QString &text) const;
758 virtual QRect itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const;
759 virtual QRect subElementRect(SubElement subElement, const QStyleOption *option) const = 0;
761
762 virtual QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, const QSize &contentsSize) const = 0;
763 virtual QFont font(ControlElement element, const QStyle::State state) const = 0;
766
768
769 virtual int pixelMetric(PixelMetric metric, const QStyleOption *option = nullptr) const = 0;
770 virtual int styleHint(StyleHint stylehint, const QStyleOption *opt = nullptr, QStyleHintReturn* returnData = nullptr) const = 0;
771
772 virtual void drawItemText(QPainter *painter, const QRect &rect,
773 int flags, const QPalette &pal, bool enabled,
774 const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const;
775 virtual void drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, const QPixmap &pixmap) const;
776 virtual void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p) const = 0;
777 virtual void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p) const = 0;
779
780 virtual QPalette standardPalette() const;
782 virtual QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option = nullptr) const = 0;
783 virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const = 0;
784 virtual void polish() { }
785
786 static QRect visualRect(Qt::LayoutDirection direction, const QRect &boundingRect, const QRect &logicalRect);
787 static QPoint visualPos(Qt::LayoutDirection direction, const QRect &boundingRect, const QPoint &logicalPos);
788 static int sliderPositionFromValue(int min, int max, int val, int space, bool upsideDown = false);
789 static int sliderValueFromPosition(int min, int max, int pos, int space, bool upsideDown = false);
790 static Qt::Alignment visualAlignment(Qt::LayoutDirection direction, Qt::Alignment alignment);
791 static QRect alignedRect(Qt::LayoutDirection direction, Qt::Alignment alignment, const QSize &size, const QRect &rectangle);
792
793 // TODO: Remove the concept of proxy (but keep it for now until everything builds)
794 const QStyle *proxy() const { return this; }
795
796private:
797 Q_DISABLE_COPY(QStyle)
798};
799
801Q_DECLARE_OPERATORS_FOR_FLAGS(QStyle::SubControls)
802
803} // namespace QQC2
804
806
807#endif // QSTYLE_H
The QAction class provides an abstraction for user commands that can be added to different user inter...
Definition qaction.h:30
\inmodule QtCore
\reentrant \inmodule QtGui
\reentrant
Definition qfont.h:22
The QIcon class provides scalable icons in different modes and states.
Definition qicon.h:20
Mode
This enum type describes the mode for which a pixmap is intended to be used.
Definition qicon.h:22
\inmodule QtCore
Definition qmargins.h:24
\inmodule QtCore
Definition qobject.h:103
The QPainter class performs low-level painting on widgets and other paint devices.
Definition qpainter.h:46
The QPalette class contains color groups for each widget state.
Definition qpalette.h:19
Returns a copy of the pixmap that is transformed using the given transformation transform and transfo...
Definition qpixmap.h:27
\inmodule QtCore\reentrant
Definition qpoint.h:25
virtual void polish()
const QStyle * proxy() const
virtual QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt=nullptr) const =0
virtual QRect itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const
Returns the area within the given rectangle in which to draw the specified pixmap according to the de...
virtual QPalette standardPalette() const
Returns the style's standard palette.
virtual QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, const QSize &contentsSize) const =0
static Qt::Alignment visualAlignment(Qt::LayoutDirection direction, Qt::Alignment alignment)
Transforms an alignment of Qt::AlignLeft or Qt::AlignRight without Qt::AlignAbsolute into Qt::AlignLe...
virtual int pixelMetric(PixelMetric metric, const QStyleOption *option=nullptr) const =0
virtual ~QStyle()
Destroys the style object.
@ SC_TitleBarNormalButton
@ SC_TitleBarUnshadeButton
@ SC_ComboBoxListBoxPopup
@ SC_TitleBarContextHelpButton
virtual void drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, const QPixmap &pixmap) const
Draws the given pixmap in the specified rectangle, according to the specified alignment,...
virtual void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p) const =0
virtual QRect itemTextRect(const QFontMetrics &fm, const QRect &r, int flags, bool enabled, const QString &text) const
Returns the area within the given rectangle in which to draw the provided text according to the speci...
@ SE_DateTimeEditLayoutItem
@ SE_PushButtonLayoutItem
@ SE_TabBarTearIndicatorRight
@ SE_DockWidgetTitleBarText
@ SE_TabBarScrollLeftButton
@ SE_TabWidgetRightCorner
@ SE_ToolButtonLayoutItem
@ SE_ItemViewItemDecoration
@ SE_RadioButtonIndicator
@ SE_ItemViewItemFocusRect
@ SE_TabBarTabRightButton
@ SE_RadioButtonLayoutItem
@ SE_RadioButtonFocusRect
@ SE_RadioButtonClickRect
@ SE_DockWidgetCloseButton
@ SE_TabBarScrollRightButton
@ SE_DockWidgetFloatButton
@ SE_TreeViewDisclosureItem
@ SE_ProgressBarLayoutItem
@ SE_TabBarTearIndicatorLeft
@ SE_TabWidgetTabContents
@ SE_ItemViewItemCheckIndicator
virtual void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p) const =0
virtual QFont font(ControlElement element, const QStyle::State state) const =0
QStyle()
Constructs a style object.
static QRect alignedRect(Qt::LayoutDirection direction, Qt::Alignment alignment, const QSize &size, const QRect &rectangle)
Returns a new rectangle of the specified size that is aligned to the given rectangle according to the...
virtual void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p) const =0
static int sliderPositionFromValue(int min, int max, int val, int space, bool upsideDown=false)
Converts the given logicalValue to a pixel position.
virtual QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc) const =0
@ RSIP_OnMouseClickAndAlreadyFocused
static QRect visualRect(Qt::LayoutDirection direction, const QRect &boundingRect, const QRect &logicalRect)
Returns the given logicalRectangle converted to screen coordinates based on the specified direction.
virtual QRect subElementRect(SubElement subElement, const QStyleOption *option) const =0
static int sliderValueFromPosition(int min, int max, int pos, int space, bool upsideDown=false)
Converts the given pixel position to a logical value.
virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const =0
@ SH_Menu_SpaceActivatesItem
@ SH_MenuBar_AltKeyNavigation
@ SH_Slider_StopMouseOverSlider
@ SH_Splitter_OpaqueResize
@ SH_TitleBar_ModifyNotification
@ SH_DialogButtonBox_ButtonsHaveIcons
@ SH_FontDialog_SelectAssociatedText
@ SH_TabBar_SelectMouseType
@ SH_Menu_SubMenuSloppyCloseTimeout
@ SH_ItemView_EllipsisLocation
@ SH_MenuBar_MouseTracking
@ SH_BlinkCursorWhenTextSelected
@ SH_LineEdit_PasswordMaskDelay
@ SH_TabBar_PreferNoArrows
@ SH_ScrollBar_ScrollWhenPointerLeavesControl
@ SH_ComboBox_UseNativePopup
@ SH_ToolBox_SelectedPageTitleBold
@ SH_Slider_AbsoluteSetButtons
@ SH_ItemView_ArrowKeysNavigateIntoChildren
@ SH_FormLayoutWrapPolicy
@ SH_ItemView_MovementWithoutUpdatingSelection
@ SH_Menu_FillScreenWithScroll
@ SH_TitleBar_ShowToolTipsOnButtons
@ SH_ItemView_ChangeHighlightOnFocus
@ SH_Widget_ShareActivation
@ SH_RichText_FullWidthSelection
@ SH_GroupBox_TextLabelColor
@ SH_Header_ArrowAlignment
@ SH_ScrollView_FrameOnlyAroundContents
@ SH_FormLayoutLabelAlignment
@ SH_ScrollBar_RollBetweenButtons
@ SH_TabWidget_DefaultTabPosition
@ SH_Menu_AllowActiveAndDisabled
@ SH_Workspace_FillSpaceOnMaximize
@ SH_GroupBox_TextLabelVerticalAlignment
@ SH_Menu_FlashTriggeredItem
@ SH_MessageBox_TextInteractionFlags
@ SH_ItemView_ShowDecorationSelected
@ SH_ProgressDialog_CenterCancelButton
@ SH_ComboBox_LayoutDirection
@ SH_Slider_SloppyKeyEvents
@ SH_ProgressDialog_TextLabelAlignment
@ SH_PrintDialog_RightAlignButtons
@ SH_RequestSoftwareInputPanel
@ SH_ToolTip_FallAsleepDelay
@ SH_ItemView_ActivateItemOnSingleClick
@ SH_SpinBox_ClickAutoRepeatThreshold
@ SH_ComboBox_PopupFrameStyle
@ SH_SpinBox_AnimateButton
@ SH_ComboBox_ListMouseTracking
@ SH_FormLayoutFormAlignment
@ SH_TextControl_FocusIndicatorTextCharFormat
@ SH_ScrollBar_ContextMenu
@ SH_DialogButtons_DefaultButton
@ SH_Slider_PageSetButtons
@ SH_Menu_SubMenuUniDirectionFailCount
@ SH_ListViewExpand_SelectMouseType
@ SH_FormLayoutFieldGrowthPolicy
@ SH_ToolButton_PopupDelay
@ SH_SpellCheckUnderlineStyle
@ SH_SpinBox_ButtonsInsideFrame
@ SH_ScrollBar_LeftClickAbsolutePosition
@ SH_DrawMenuBarSeparator
@ SH_MessageBox_UseBorderForButtonSpacing
@ SH_TabBar_CloseButtonPosition
@ SH_Menu_SubMenuSloppySelectOtherActions
@ SH_MessageBox_CenterButtons
@ SH_MainWindow_SpaceBelowMenuBar
@ SH_DockWidget_ButtonsHaveFrame
@ SH_SpinBox_ClickAutoRepeatRate
@ SH_ScrollBar_MiddleClickAbsolutePosition
@ SH_FocusFrame_AboveWidget
@ SH_Widget_Animation_Duration
@ SH_SpinControls_DisableOnBounds
@ SH_Menu_SupportsSections
@ SH_ItemView_DrawDelegateFrame
@ SH_ComboBox_AllowWheelScrolling
@ SH_Menu_SubMenuDontStartSloppyOnLeave
@ SH_TabBar_ChangeCurrentDelay
@ SH_LineEdit_PasswordCharacter
@ SH_Menu_SubMenuResetWhenReenteringParent
@ SH_ToolTipLabel_Opacity
@ SH_Menu_SubMenuUniDirection
@ SH_SpinBox_StepModifier
@ SH_SpinBox_KeyPressAutoRepeatRate
@ SH_Menu_SubMenuPopupDelay
@ SH_ItemView_PaintAlternatingRowColorsForEmptyArea
virtual int styleHint(StyleHint stylehint, const QStyleOption *opt=nullptr, QStyleHintReturn *returnData=nullptr) const =0
@ State_KeyboardFocusChange
Definition qquickstyle.h:65
@ PE_IndicatorItemViewItemCheck
@ PE_IndicatorHeaderArrow
@ PE_IndicatorRadioButton
@ PE_IndicatorTabTearRight
@ PE_PanelButtonCommand
Definition qquickstyle.h:91
@ PE_IndicatorArrowLeft
Definition qquickstyle.h:99
@ PE_PanelScrollAreaCorner
@ PE_IndicatorToolBarHandle
@ PE_FrameStatusBarItem
Definition qquickstyle.h:84
@ PE_IndicatorButtonDropDown
@ PE_IndicatorColumnViewArrow
@ PE_IndicatorMenuCheckMark
@ PE_IndicatorToolBarSeparator
@ PE_IndicatorItemViewItemDrop
@ PE_FrameDefaultButton
Definition qquickstyle.h:78
@ PE_IndicatorProgressChunk
@ PE_IndicatorTabTearLeft
@ PE_IndicatorArrowDown
Definition qquickstyle.h:98
@ PE_IndicatorDockWidgetResizeHandle
virtual QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option=nullptr) const =0
@ PM_TabBarTabShiftHorizontal
@ PM_DialogButtonsButtonWidth
@ PM_LayoutVerticalSpacing
@ PM_RadioButtonLabelSpacing
@ PM_DefaultLayoutSpacing
@ PM_ToolBarSeparatorExtent
@ PM_ButtonDefaultIndicator
@ PM_ScrollView_ScrollBarOverlap
@ PM_TabCloseIndicatorWidth
@ PM_SpinBoxFocusFrameRadius
@ PM_DialFocusFrameRadius
@ PM_DialogButtonsSeparator
@ PM_TitleBarButtonIconSize
@ PM_DefaultTopLevelMargin
@ PM_ToolBarExtensionExtent
@ PM_HeaderDefaultSectionSizeHorizontal
@ PM_SliderFocusFrameRadius
@ PM_SliderTickmarkOffset
@ PM_MdiSubWindowFrameWidth
@ PM_SliderSpaceAvailable
@ PM_ScrollView_ScrollBarSpacing
@ PM_CheckBoxFocusFrameRadius
@ PM_ProgressBarChunkWidth
@ PM_CheckBoxLabelSpacing
@ PM_TabBarScrollButtonWidth
@ PM_MenuDesktopFrameWidth
@ PM_DockWidgetHandleExtent
@ PM_PushButtonFocusFrameRadius
@ PM_TabCloseIndicatorHeight
@ PM_DockWidgetTitleBarButtonMargin
@ PM_TabBar_ScrollButtonOverlap
@ PM_DialogButtonsButtonHeight
@ PM_ExclusiveIndicatorHeight
@ PM_LayoutHorizontalSpacing
@ PM_MdiSubWindowMinimizedWidth
@ PM_ExclusiveIndicatorWidth
@ PM_TextFieldFocusFrameRadius
@ PM_TextAreaFocusFrameRadius
@ PM_ButtonShiftHorizontal
@ PM_SliderControlThickness
@ PM_DockWidgetFrameWidth
@ PM_DockWidgetSeparatorExtent
@ PM_RadioButtonFocusFrameRadius
@ PM_ToolTipLabelFrameWidth
@ PM_TabBarTabShiftVertical
@ PM_HeaderDefaultSectionSizeVertical
@ PM_ComboBoxFocusFrameRadius
@ PM_DockWidgetTitleMargin
virtual void drawItemText(QPainter *painter, const QRect &rect, int flags, const QPalette &pal, bool enabled, const QString &text, QPalette::ColorRole textRole=QPalette::NoRole) const
Draws the given text in the specified rectangle using the provided painter and palette.
@ SP_TitleBarContextHelpButton
@ SP_MessageBoxInformation
@ SP_FileDialogDetailedView
@ SP_RestoreDefaultsButton
@ SP_FileDialogContentsView
@ SP_ToolBarVerticalExtensionButton
@ SP_TitleBarNormalButton
@ SP_TitleBarUnshadeButton
@ SP_DockWidgetCloseButton
@ SP_ToolBarHorizontalExtensionButton
@ SP_DialogYesToAllButton
virtual QMargins ninePatchMargins(ComplexControl cc, const QStyleOptionComplex *opt, const QSize &imageSize) const =0
virtual SubControl hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt) const =0
virtual QMargins ninePatchMargins(ControlElement ce, const QStyleOption *opt, const QSize &imageSize) const =0
static QPoint visualPos(Qt::LayoutDirection direction, const QRect &boundingRect, const QPoint &logicalPos)
Returns the given logicalPosition converted to screen coordinates based on the specified direction.
\inmodule QtCore\reentrant
Definition qrect.h:30
\inmodule QtCore
Definition qsize.h:25
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
\variable QStyleOptionGraphicsItem::exposedRect
\variable QStyleOptionMenuItem::menuItemType
The QStyleOption class stores the parameters used by QStyle functions.
QString text
rect
[4]
uint alignment
direction
QStyleOptionButton opt
else opt state
[0]
Combined button and popup list for selecting options.
LayoutDirection
#define Q_DECLARE_FLAGS(Flags, Enum)
Definition qflags.h:174
#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags)
Definition qflags.h:194
static const QStyle::SubControl SubControls[]
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLboolean r
[2]
GLenum GLenum GLsizei const GLuint GLboolean enabled
GLbitfield flags
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei imageSize
GLuint GLfloat * val
GLfloat GLfloat p
[1]
GLuint GLenum option
static const QRectF boundingRect(const QPointF *points, int pointCount)
#define Q_ENUM(x)
#define Q_OBJECT
widget render & pixmap
QPainter painter(this)
[7]