QStyle Class
QStyle类是一个抽象基类,它封装了GUI的外观。
Qt 包含一组 QStyle 子类,这些子类可以模拟Qt支持不同的平台样式(QWindowsStyle,QMacStyle等)。默认情况下,这些样式内置在 Qt GUI 模块中,样式也可以作为插件使用。
Qt 的内置小窗口部件使用 QStyle 来执行几乎所有的绘图,从而确保它们看起来完全等同于等效的本级窗口小部件。下图展示了九中不同样式的 QCombox。
Setting a Style (设定风格)
可以使用 QApplication :: setStyle()函数设置整个应用程序的样式。
QApplication::setStyle(QStyleFactory::create("Windows"))
如果未指定样式,则 Qt 将为用户的平台或桌面环境选择合适的样式。
也可以使用 QWidget :: setStyle()函数在单个窗口小部件上设置样式。
Developing Style-Aware Custom Widgets (开发感知样式的自定义小部件)
如果你正在开发自定义窗口小部件,并希望他们在所有的平台看起来都不错,则可以使用 QStyle 函数来执行窗口小部件绘制的各个部分, 例如drawItemText(),drawItemPixmap(),drawPrimitive(),drawControl()和drawComplexControl( )。
大多数 QStyle 绘制函数采用四个参数:
1. 枚举值,指定要绘制的那个图形元素。
2. QStyleOption,指定如何和在哪里呈现该元素
3. 用于绘制元素的 QPainter。
4. 执行绘图的QWidget(可选)。
例如:在窗口小部件上绘制焦点矩形。
QStyle 从 QStyleOption 中获取呈现图形元素所需要的所有信息。如果样式需要其执行特殊处理(例如 macOS 上的动画按钮),则将其作为最后一个参数传递,但这不是必须的。
实际上,正确的设置 QPainter ,您可以使用 QStyle 在任何绘画设备上绘画,而不仅仅是小部件。
QStyleOption 具有各种子类,可用于绘制各种类型的图形。例如, PE_FrameFocusRect 需要一个 QStyleOptionFocusRect 参数。
为了确保绘图操作尽可能块,QStyleOption 及其子类具有相同的公共数据成员,有关如何使用,请参考 QStyleOption类文档。
为了方便起见,Qt提供了QStylePainter 类,该类结合了QStyle,QPainter和QWidget。这样就可以写:
代替:
公共类型:
enum QStyle::ComplexControl
该枚举类型,描述了可用的复杂控件,复杂的空间具有不同的行为,具体取决于用户单击它们的位置或按下的键。
不变 | 值 | 描述 |
---|---|---|
QStyle::CC_SpinBox | 0 | 旋转框,例如QSpinBox。 |
QStyle::CC_ComboBox | 1 | 组合框,例如QComboBox。 |
QStyle::CC_ScrollBar | 2 | 滚动条,例如QScrollBar。 |
QStyle::CC_Slider | 3 | 滑块,例如QSlider。 |
QStyle::CC_ToolButton | 4 | 工具按钮,例如QToolButton。 |
QStyle::CC_TitleBar | 5 | 标题栏,类似于QMdiSubWindow中使用的标题栏。 |
QStyle::CC_GroupBox | 7 | 一个分组框,例如QGroupBox。 |
QStyle::CC_Dial | 6 | 拨号盘,例如QDial。 |
QStyle::CC_MdiControls | 8 | 菜单栏中的“最小化”,“关闭”和“正常”按钮可最大化MDI子窗口。 |
QStyle::CC_CustomBase | 0xf0000000 | 自定义复杂控件的基本值。自定义值必须大于此值。 |
enum QStyle::ControlElement
该枚举代表一个控制元素。控件元素是执行某些操作或向用户显示信息的小部件的一部分。
不变 | 值 | 描述 |
---|---|---|
QStyle::CE_PushButton | 0 | 一个QPushButton,绘制CE_PushButtonBevel,CE_PushButtonLabel和PE_FrameFocusRect。 |
QStyle::CE_PushButtonBevel | 1 | QPushButton的斜角和默认指示器。 |
QStyle::CE_PushButtonLabel | 2 | QPushButton的标签(带有文本或像素图的图标)。 |
QStyle::CE_DockWidgetTitle | 30 | 停靠窗口标题。 |
QStyle::CE_Splitter | 28 | 分离器手柄;另请参见QSplitter。 |
QStyle::CE_CheckBox | 3 | 一个QCheckBox,绘制PE_IndicatorCheckBox,一个CE_CheckBoxLabel和PE_FrameFocusRect。 |
QStyle::CE_CheckBoxLabel | 4 | QCheckBox的标签(文本或像素图)。 |
QStyle::CE_RadioButton | 5 | 一个QRadioButton,绘制PE_IndicatorRadioButton,一个CE_RadioButtonLabel和PE_FrameFocusRect。 |
QStyle::CE_RadioButtonLabel | 6 | QRadioButton的标签(文本或像素图)。 |
QStyle::CE_TabBarTab | 7 | QTabBar中的选项卡和标签。 |
QStyle::CE_TabBarTabShape | 8 | 标签栏内的标签形状。 |
QStyle::CE_TabBarTabLabel | 9 | 标签内的标签。 |
QStyle::CE_ProgressBar | 10 | 一个QProgressBar,吸引CE_ProgressBarGroove,CE_ProgressBarContents和CE_ProgressBarLabel。 |
QStyle::CE_ProgressBarGroove | 11 | 在QProgressBar中绘制进度指示器的凹槽。 |
QStyle::CE_ProgressBarContents | 12 | QProgressBar的进度指示器。 |
QStyle::CE_ProgressBarLabel | 13 | QProgressBar的文本标签。 |
QStyle::CE_ToolButtonLabel | 22 | 工具按钮的标签。 |
QStyle::CE_MenuBarItem | 20 | QMenuBar中的菜单项。 |
QStyle::CE_MenuBarEmptyArea | 21 | QMenuBar的空白区域。 |
QStyle::CE_MenuItem | 14 | QMenu中的菜单项。 |
QStyle::CE_MenuScroller | 15 | 样式支持滚动时,在QMenu中滚动区域。 |
QStyle::CE_MenuTearoff | 18 | 表示QMenu的撕下部分的菜单项。 |
QStyle::CE_MenuEmptyArea | 19 | 菜单中没有菜单项的区域。 |
QStyle::CE_MenuHMargin | 17 | 菜单左侧/右侧的水平多余空间。 |
QStyle::CE_MenuVMargin | 16 | 菜单顶部/底部的垂直多余空间。 |
QStyle::CE_ToolBoxTab | 26 | QToolBox中工具箱的标签和标签。 |
QStyle::CE_SizeGrip | 27 | 窗口大小调整手柄;另请参见QSizeGrip。 |
QStyle::CE_Header | 23 | 标头。 |
QStyle::CE_HeaderSection | 24 | 标头部分。 |
QStyle::CE_HeaderLabel | 25 | 标头的标签。 |
QStyle::CE_ScrollBarAddLine | 31 | 滚动条线增加指示器。(即,向下滚动);另请参见QScrollBar。 |
QStyle::CE_ScrollBarSubLine | 32 | 滚动条行减少指示器(即向上滚动)。 |
QStyle::CE_ScrollBarAddPage | 33 | 滚动条页面增加指示器(即,页面向下)。 |
QStyle::CE_ScrollBarSubPage | 34 | 滚动条页面减少指示器(即,页面向上)。 |
QStyle::CE_ScrollBarSlider | 35 | 滚动条滑块。 |
QStyle::CE_ScrollBarFirst | 36 滚动条第一行指示器(即主页)。 | |
QStyle::CE_ScrollBarLast | 37 | 滚动条最后一行指示符(即结束)。 |
QStyle::CE_RubberBand | 29 | 例如在图标视图中使用的橡皮筋。 |
QStyle::CE_FocusFrame | 38 | 焦点框受样式控制。 |
QStyle::CE_ItemViewItem | 45 | 项目视图中的项目。 |
QStyle::CE_CustomBase | 0xf0000000 | 自定义控件元素的基本值;自定义值必须大于此值。 |
QStyle::CE_ComboBoxLabel | 39 | 不可编辑的QComboBox的标签。 |
QStyle::CE_ToolBar | 40 | QToolBar之类的工具栏。 |
QStyle::CE_ToolBoxTabShape | 41 | 工具箱的标签形状。 |
QStyle::CE_ToolBoxTabLabel | 42 | 工具箱的标签标签。 |
QStyle::CE_HeaderEmptyArea | 43 | 标题视图中没有标题部分的区域。 |
QStyle::CE_ShapedFrame | 46 | 具有QStyleOptionFrame中指定形状的框架;参见QFrame。 |
另请参见drawControl()。
enum QStyle::SubControl
该枚举描述了可用子控件,子控件是复杂(ComplexControl)中的控件元素。
不变 | 值 | 描述 |
---|---|---|
QStyle::SC_None | 0x00000000 | 与其他子控件不匹配的特殊值。 |
QStyle::SC_ScrollBarAddLine | 0x00000001 | 滚动条添加线(即,向下/向右箭头);另请参见QScrollBar。 |
QStyle::SC_ScrollBarSubLine | 0x00000002 | 滚动条子行(即,向上/向左箭头)。 |
QStyle::SC_ScrollBarAddPage | 0x00000004 | 滚动条添加页面(即向下翻页)。 |
QStyle::SC_ScrollBarSubPage | 0x00000008 | 滚动条子页面(即,向上翻页)。 |
QStyle::SC_ScrollBarFirst | 0x00000010 | 滚动条的第一行(即主页)。 |
QStyle::SC_ScrollBarLast | 0x00000020 | 滚动条的最后一行(即结束)。 |
QStyle::SC_ScrollBarSlider | 0x00000040 | 滚动条滑块手柄。 |
QStyle::SC_ScrollBarGroove | 0x00000080 | 特殊子控件,其中包含滑块手柄可能在其中移动的区域。 |
QStyle::SC_SpinBoxUp | 0x00000001 | 旋转小部件/增加;另请参见QSpinBox。 |
QStyle::SC_SpinBoxDown | 0x00000002 | 旋转小部件向下/减小。 |
QStyle::SC_SpinBoxFrame | 0x00000004 | 旋转小部件框架。 |
QStyle::SC_SpinBoxEditField | 0x00000008 | 旋转小部件编辑字段。 |
QStyle::SC_ComboBoxEditField | 0x00000002 | 组合框编辑字段;另请参阅QComboBox。 |
QStyle::SC_ComboBoxArrow | 0x00000004 | 组合框箭头按钮。 |
QStyle::SC_ComboBoxFrame | 0x00000001 | 组合框框架。 |
QStyle::SC_ComboBoxListBoxPopup | 0x00000008 | 组合框弹出窗口的参考矩形。用于计算弹出窗口的位置。 |
QStyle::SC_SliderGroove | 0x00000001 | 特殊子控件,其中包含滑块手柄可能在其中移动的区域。 |
QStyle::SC_SliderHandle | 0x00000002 | 滑块手柄。 |
QStyle::SC_SliderTickmarks | 0x00000004 | 滑块刻度线。 |
QStyle::SC_ToolButton | 0x00000001 | 工具按钮(另请参见QToolButton)。 |
QStyle::SC_ToolButtonMenu | 0x00000002 | 子控件,用于在工具按钮中打开弹出菜单。 |
QStyle::SC_TitleBarSysMenu | 0x00000001 | 系统菜单按钮(即还原,关闭等)。 |
QStyle::SC_TitleBarMinButton | 0x00000002 | 最小化按钮。 |
QStyle::SC_TitleBarMaxButton | 0x00000004 | 最大化按钮。 |
QStyle::SC_TitleBarCloseButton | 0x00000008 | 关闭按钮。 |
QStyle::SC_TitleBarLabel | 0x00000100 | 窗口标题标签。 |
QStyle::SC_TitleBarNormalButton | 0x00000010 | 正常(恢复)按钮。 |
QStyle::SC_TitleBarShadeButton | 0x00000020 | 阴影按钮。 |
QStyle::SC_TitleBarUnshadeButton | 0x00000040 | 阴影按钮。 |
QStyle::SC_TitleBarContextHelpButton | 0x00000080 | 上下文帮助按钮。 |
QStyle::SC_DialHandle | 0x00000002 | 拨盘的手柄(即用来控制拨盘的手柄)。 |
QStyle::SC_DialGroove | 0x00000001 | 表盘的凹槽。 |
QStyle::SC_DialTickmarks | 0x00000004 | 表盘的刻度线。 |
QStyle::SC_GroupBoxFrame | 0x00000008 | 组框的框架。 |
QStyle::SC_GroupBoxLabel | 0x00000002 | 组框的标题。 |
QStyle::SC_GroupBoxCheckBox | 0x00000001 | 组框的可选复选框。 |
QStyle::SC_GroupBoxContents | 0x00000004 | 组框内容。 |
QStyle::SC_MdiNormalButton | 0x00000002 | 菜单栏中的MDI子窗口的普通按钮。 |
QStyle::SC_MdiMinButton | 0x00000001 | 菜单栏中的MDI子窗口的最小化按钮。 |
QStyle::SC_MdiCloseButton | 0x00000004 | 菜单栏中的MDI子窗口的关闭按钮。 |
QStyle::SC_All | 0xffffffff | 匹配所有子控件的特殊值。 |
enum QStyle::SubElement
该枚举表示窗口小部件的子区域。样式实现使用这些区域来绘制窗口小部件的不同部分。
不变 | 值 | 描述 |
---|---|---|
QStyle::SE_PushButtonContents | 0 | 包含标签的区域(带有文本或像素图的图标)。 |
QStyle::SE_PushButtonFocusRect | 1 | 焦点区域(通常大于内容区域)。 |
QStyle::SE_PushButtonLayoutItem | 38 | 占父布局的区域。 |
QStyle::SE_PushButtonBeve | l 57 | [自5.15起]用于按钮斜角的区域。 |
QStyle::SE_CheckBoxIndicator | 2 | 状态指示器的区域(例如,复选标记)。 |
QStyle::SE_CheckBoxContents | 3 | 标签区域(文本或像素图)。 |
QStyle::SE_CheckBoxFocusRect | 4 | 聚焦指示器的区域。 |
QStyle::SE_CheckBoxClickRect | 5 | 可点击区域,默认为SE_CheckBoxFocusRect。 |
QStyle::SE_CheckBoxLayoutItem | 32 | 占父布局的区域。 |
QStyle::SE_DateTimeEditLayoutItem | 34 | 占父布局的区域。 |
QStyle::SE_RadioButtonIndicator | 6 | 状态指示器的区域。 |
QStyle::SE_RadioButtonContents | 7 | 标签区域。 |
QStyle::SE_RadioButtonFocusRect | 8 | 聚焦指示器的区域。 |
QStyle::SE_RadioButtonClickRect | 9 | 可点击区域,默认为SE_RadioButtonFocusRect。 |
QStyle::SE_RadioButtonLayoutItem | 39 | 占父布局的区域。 |
QStyle::SE_ComboBoxFocusRect | 10 | 聚焦指示器的区域。 |
QStyle::SE_SliderFocusRect | 11 | 聚焦指示器的区域。 |
QStyle::SE_SliderLayoutItem | 40 | 占父布局的区域。 |
QStyle::SE_SpinBoxLayoutItem | 41 | 占父布局的区域。 |
QStyle::SE_ProgressBarGroove | 12 | 凹槽面积。 |
QStyle::SE_ProgressBarContents | 13 | 进度指示器的区域。 |
QStyle::SE_ProgressBarLabel | 14 | 文本标签的区域。 |
QStyle::SE_ProgressBarLayoutItem | 37 | 占父布局的区域。 |
QStyle::SE_FrameContents | 27 | 框架内容的区域。 |
QStyle::SE_ShapedFrameContents | 52 | 使用QStyleOptionFrame中的形状的框架内容区域;参见QFrame |
QStyle::SE_FrameLayoutItem | 43 | 占父布局的区域。 |
QStyle::SE_HeaderArrow | 17 | 标头的排序指示器区域。 |
QStyle::SE_HeaderLabel | 16 | 标头中标签的区域。 |
QStyle::SE_LabelLayoutItem | SE_DateTimeEditLayoutItem + 2 | 占父布局的区域。 |
QStyle::SE_LineEditContents | 26 | 行编辑内容的区域。 |
QStyle::SE_TabWidgetLeftCorner | 21 | 选项卡小部件中左角小部件的区域。 |
QStyle::SE_TabWidgetRightCorner | 22 | 选项卡小部件中右上角小部件的区域。 |
QStyle::SE_TabWidgetTabBar | 18 | 选项卡小部件中选项卡条小部件的区域。 |
QStyle::SE_TabWidgetTabContents | 20 | 选项卡小部件的内容区域。 |
QStyle::SE_TabWidgetTabPane | 19 | 选项卡小部件的窗格区域。 |
QStyle::SE_TabWidgetLayoutItem | 45 | 占父布局的区域。 |
QStyle::SE_ToolBoxTabContents | 15 | 工具箱选项卡的图标和标签的区域。 |
QStyle::SE_ToolButtonLayoutItem | 42 | 占父布局的区域。 |
QStyle::SE_ItemViewItemCheckIndicator | 23 | 查看项目的复选标记的区域。 |
QStyle::SE_TabBarTearIndicator | 24 | 不推荐使用。请改用SE_TabBarTearIndicatorLeft。 |
QStyle::SE_TabBarTearIndicatorLeft | SE_TabBarTearIndicator | 带滚动箭头的选项卡栏左侧的撕裂指示器区域。 |
QStyle::SE_TabBarTearIndicatorRight | 56 | 带滚动箭头的选项卡栏右侧的撕裂指示器区域。 |
QStyle::SE_TabBarScrollLeftButton | 54 | 带滚动按钮的选项卡栏上的向左滚动按钮的区域。 |
QStyle::SE_TabBarScrollRightButton | 55 | 带滚动按钮的选项卡栏上的向右滚动按钮的区域。 |
QStyle::SE_TreeViewDisclosureItem | 25 | 树枝中实际披露项目的区域。 |
QStyle::SE_GroupBoxLayoutItem | 44 | 占父布局的区域。 |
QStyle::SE_CustomBase | 0xf0000000 | 自定义子元素的基本值。自定义值必须大于此值。 |
QStyle::SE_DockWidgetFloatButton | 29 | 停靠小部件的浮动按钮。 |
QStyle::SE_DockWidgetTitleBarText | 30 | 停靠小部件标题的文本范围。 |
QStyle::SE_DockWidgetCloseButton | 28 | 停靠小部件的关闭按钮。 |
QStyle::SE_DockWidgetIcon | 31 | 停靠小部件的图标。 |
QStyle::SE_ComboBoxLayoutItem | 33 | 占父布局的区域。 |
QStyle::SE_ItemViewItemDecoration | 46 | 视图项的装饰区域(图标)。 |
QStyle::SE_ItemViewItemText | 47 | 视图项的文本区域。 |
QStyle::SE_ItemViewItemFocusRect | 48 | 视图项的焦点区域。 |
QStyle::SE_TabBarTabLeftButton | 49 | 选项卡栏中选项卡左侧的窗口小部件区域。 |
QStyle::SE_TabBarTabRightButton | 50 | 选项卡栏中选项卡右侧的窗口小部件区域。 |
QStyle::SE_TabBarTabText | 51 | 选项卡栏中选项卡上文本的区域。 |
QStyle::SE_ToolBarHandle | 53 | 工具栏手柄的区域。 |
enum QStyle::PrimitiveElement
该枚举描述了各种基本元素。基本元素是最长见的GUI元素,例如复选框指示符或者按钮斜角。
不变 | 值 | 描述 |
---|---|---|
QStyle::PE_FrameStatusBar | PE_FrameStatusBarItem | 过时的 请改用PE_FrameStatusBarItem。 |
QStyle::PE_PanelButtonCommand | 13 | 用于启动动作的按钮,例如QPushButton。 |
QStyle::PE_FrameDefaultButton | 1 | 此框围绕默认按钮,例如在对话框中。 |
QStyle::PE_PanelButtonBevel | 14 | 带有按钮斜角的通用面板。 |
QStyle::PE_PanelButtonTool | 15 | 工具按钮面板,与QToolButton一起使用。 |
QStyle::PE_PanelLineEdit | 18 | QLineEdit的面板。 |
QStyle::PE_IndicatorButtonDropDown | 24 | 下拉按钮的指示器,例如显示菜单的工具按钮。 |
QStyle::PE_FrameFocusRect | 3 | 通用焦点指示器。 |
QStyle::PE_IndicatorArrowUp | 22 | 通用向上箭头。 |
QStyle::PE_IndicatorArrowDown | 19 | 通用向下箭头。 |
QStyle::PE_IndicatorArrowRight | 21 | 通用右箭头。 |
QStyle::PE_IndicatorArrowLeft | 20 | 通用左箭头。 |
QStyle::PE_IndicatorSpinUp | 35 | 旋转小部件(例如QSpinBox)的向上符号。 |
QStyle::PE_IndicatorSpinDown | 32 | 旋转小部件的向下符号。 |
QStyle::PE_IndicatorSpinPlus | 34 | 增加旋转小部件的符号。 |
QStyle::PE_IndicatorSpinMinus | 33 | 减少旋转小部件的符号。 |
QStyle::PE_IndicatorItemViewItemCheck | 25 | 视图项目的开/关指示器。 |
QStyle::PE_IndicatorCheckBox | 26 | 开/关指示器,例如QCheckBox。 |
QStyle::PE_IndicatorRadioButton | 31 | 专用的开/关指示器,例如QRadioButton。 |
QStyle::PE_IndicatorDockWidgetResizeHandle | 27 | 调整坞站窗口的句柄大小。 |
QStyle::PE_Frame | 0 | 通用框架 |
QStyle::PE_FrameMenu | 6 | 弹出窗口/菜单的框架;另请参见QMenu。 |
QStyle::PE_PanelMenuBar | 16 | 菜单栏面板。 |
QStyle::PE_PanelScrollAreaCorner | 40 | 面板位于滚动区域的右下(或左下)角。 |
QStyle::PE_FrameDockWidget | 2 | 停靠窗口和工具栏的面板框架。 |
QStyle::PE_FrameTabWidget | 8 | 标签小部件的框架。 |
QStyle::PE_FrameLineEdit | 5 | 用于线编辑的面板框架。 |
QStyle::PE_FrameGroupBox | 4 | 组框周围的面板框架。 |
QStyle::PE_FrameButtonBevel | 10 | 按钮斜角的面板框架。 |
QStyle::PE_FrameButtonTool | 11 | 工具按钮的面板框架。 |
QStyle::PE_IndicatorHeaderArrow | 28 | 用于指示对列表或表标题进行排序的箭头。 |
QStyle::PE_FrameStatusBarItem | 7 | 状态栏项目的框架;另请参见QStatusBar。 |
QStyle::PE_FrameWindow | 9 | 围绕MDI窗口或停靠窗口进行构图。 |
QStyle::PE_IndicatorMenuCheckMark | 29 | 菜单中使用的复选标记。 |
QStyle::PE_IndicatorProgressChunk | 30 | 进度条指示器的部分;另请参见QProgressBar。 |
QStyle::PE_IndicatorBranch | 23 | 用于在树视图中表示树的分支的线。 |
QStyle::PE_IndicatorToolBarHandle | 36 | 工具栏的句柄。 |
QStyle::PE_IndicatorToolBarSeparator | 37 | 工具栏中的分隔符。 |
QStyle::PE_PanelToolBar | 17 | 工具栏的面板。 |
QStyle::PE_PanelTipLabel | 38 | 提示标签面板。 |
QStyle::PE_FrameTabBarBase | 12 | 为选项卡栏绘制的框架,通常为不属于选项卡小部件的选项卡栏绘制。 |
QStyle::PE_IndicatorTabTear | 39 | 不推荐使用。请改用PE_IndicatorTabTearLeft。 |
QStyle::PE_IndicatorTabTearLeft | PE_IndicatorTabTear | 当有很多标签时,该标签在可见标签栏的左侧部分滚动的指示符。 |
QStyle::PE_IndicatorTabTearRight | 49 | 当有很多标签时,在可见标签栏右侧部分显示一个标签的指示。 |
QStyle::PE_IndicatorColumnViewArrow | 42 | QColumnView中的箭头。 |
QStyle::PE_Widget | 41 | 一个普通的QWidget。 |
QStyle::PE_CustomBase | 0xf000000 | 自定义基本元素的基值。高于此的所有值保留供自定义使用。自定义值必须大于此值。 |
QStyle::PE_IndicatorItemViewItemDrop | 43 | 绘制的指示器,用于显示在项目视图中进行拖放操作期间要在项目视图中将项目放置到何处。 |
QStyle::PE_PanelItemViewItem | 44 | 项目视图中项目的背景。 |
QStyle::PE_PanelItemViewRow | 45 | 行的背景在项目视图中。 |
QStyle::PE_PanelStatusBar | 46 | 状态栏的面板。 |
QStyle::PE_IndicatorTabClose | 47 | 标签栏上的关闭按钮。 |
QStyle::PE_PanelMenu | 48 | 菜单面板。 |
enum QStyle::ContentsType
该枚举描述了可用的内容类型。这些用于计算各种小部件的内容和大小。
不变 | 值 | 描述 |
---|---|---|
QStyle::CT_CheckBox | 1 | 一个复选框,例如QCheckBox。 |
QStyle::CT_ComboBox | 4 | 组合框,例如QComboBox。 |
QStyle::CT_HeaderSection | 19 | 标头部分,例如QHeader。 |
QStyle::CT_LineEdit | 14 | 行编辑,例如QLineEdit。 |
QStyle::CT_Menu | 10 | 菜单,例如QMenu。 |
QStyle::CT_MenuBar | 9 | 菜单栏,例如QMenuBar。 |
QStyle::CT_MenuBarItem | 8 | 菜单栏项,例如QMenuBar中的按钮。 |
QStyle::CT_MenuItem | 7 | 菜单项,例如QMenuItem。 |
QStyle::CT_ProgressBar | 6 | 进度条,例如QProgressBar。 |
QStyle::CT_PushButton | 0 | 一个按钮,例如QPushButton。 |
QStyle::CT_RadioButton | 2 | 单选按钮,例如QRadioButton。 |
QStyle::CT_SizeGrip | 16 | 尺寸夹点,例如QSizeGrip。 |
QStyle::CT_Slider | 12 | 滑块,例如QSlider。 |
QStyle::CT_ScrollBar | 13 | 滚动条,例如QScrollBar。 |
QStyle::CT_SpinBox | 15 | 旋转框,例如QSpinBox。 |
QStyle::CT_Splitter | 5 | 拆分器,例如QSplitter。 |
QStyle::CT_TabBarTab | 11 | 标签栏上的标签,例如QTabBar。 |
QStyle::CT_TabWidget | 17 | 标签小部件,例如QTabWidget。 |
QStyle::CT_ToolButton | 3 | 工具按钮,例如QToolButton。 |
QStyle::CT_GroupBox | 20 | 一个分组框,例如QGroupBox。 |
QStyle::CT_ItemViewItem | 22 | 项目视图中的项目。 |
QStyle::CT_CustomBase | 0xf0000000 | 自定义内容类型的基值。自定义值必须大于此值。 |
QStyle::CT_MdiControls | 21 | 菜单栏中的“最小化”,“正常”和“关闭”按钮可用于最大化MDI子窗口。 |
另请参见 sizeFromContents()。
enum QStyle::StateFlag
该枚举描述了绘制基本元素时使用的标志。
请注意,并非所有的基本元素都有这些标志,这些标志是对于不同的项目可能具有不同的意义。
不变 | 值 | 描述 |
---|---|---|
QStyle::State_None | 0x00000000 | 指示窗口小部件没有状态。 |
QStyle::State_Active | 0x00010000 | 指示小部件处于活动状态。 |
QStyle::State_AutoRaise | 0x00001000 | 用于指示是否应在工具按钮上使用自动提升外观。 |
QStyle::State_Children | 0x00080000 | 用于指示项目视图分支是否有子级。 |
QStyle::State_DownArrow | 0x00000040 | 用于指示在小部件上是否应显示向下箭头。 |
QStyle::State_Editing | 0x00400000 | 用于指示是否在窗口小部件上打开了编辑器。 |
QStyle::State_Enabled | 0x00000001 | 用于指示是否启用了窗口小部件。 |
QStyle::State_HasEditFocus | 0x01000000 | 用于指示窗口小部件当前是否具有编辑焦点。 |
QStyle::State_HasFocus | 0x00000100 | 用于指示窗口小部件是否具有焦点。 |
QStyle::State_Horizontal | 0x00000080 | 例如,用于指示窗口小部件是否水平放置。工具栏。 |
QStyle::State_KeyboardFocusChange | 0x00800000 | 用于指示焦点是否已通过键盘更改,例如,选项卡,后缀或快捷方式。 |
QStyle::State_MouseOver | 0x00002000 | 用于指示窗口小部件是否在鼠标下方。 |
QStyle::State_NoChange | 0x00000010 | 用于指示三态复选框。 |
QStyle::State_Off | 0x00000008 | 用于指示是否未选中小部件。 |
QStyle::State_On | 0x00000020 | 用于指示是否检查了小部件。 |
QStyle::State_Raised | 0x00000002 | 用于指示按钮是否被抬起。 |
QStyle::State_ReadOnly | 0x02000000 | 用于指示窗口小部件是否为只读。 |
QStyle::State_Selected | 0x00008000 | 用于指示是否选择了小部件。 |
QStyle::State_Item | 0x00100000 | 项目视图使用它来指示是否应绘制水平分支。 |
QStyle::State_Open | 0x00040000 | 由项目视图使用以指示树枝是否打开。 |
QStyle::State_Sibling | 0x00200000 | 项目视图用于指示是否需要绘制垂直线(用于同级)。 |
QStyle::State_Sunken | 0x00000004 | 用于指示窗口小部件是否凹陷或被按下。 |
QStyle::State_UpArrow | 0x00004000 | 用于指示在小部件上是否应显示向上箭头。 |
QStyle::State_Mini | 0x08000000 | 用于指示迷你样式的Mac小部件或按钮。 |
QStyle::State_Small | 0x04000000 | 用于指示Mac小部件或按钮的样式。 |
公共函数:
void QStyle::drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = Q_NULLPTR) const
使用提供的 @painter 和 @option 指定的样式选项绘制给定的 @element。
widget参数是可选的,可用于帮助绘制控件。 option参数是指向QStyleOption对象的指针,该对象可以使用 qstyleoption_cast()函数强制转换为正确的子类。
下表列出了控件元素及其关联的样式选项子类。 样式选项包含绘制控件所需的所有参数,包括QStyleOption :: state,其中包含绘制时使用的样式标志。 该表还描述了在将给定选项转换为适当的子类时设置的标志。
void QStyle::drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget = Q_NULLPTR) const
使用提供的@painter和@option指定的样式选项绘制给定的@control。
widget参数是可选的,可用于帮助绘制控件。
option参数是指向QStyleOptionComplex对象的指针,可以使用 qstyleoption_cast()函数将其转换为正确的子类。 请注意,指定选项的rect成员必须在逻辑坐标中。 该函数的重新实现应在调用drawPrimitive()或drawControl()函数之前,使用visualRect()将逻辑坐标更改为屏幕坐标。
下表列出了复杂的控件元素及其关联的样式选项子类。 样式选项包含绘制控件所需的所有参数,包括QStyleOption :: state,其中包含绘制时使用的样式标志。 该表还描述了在将给定选项转换为适当的子类时设置的标志。
QRect QStyle::subControlRect(ComplexControl control, const QStyleOptionComplex *option, SubControl subControl, const QWidget *widget = Q_NULLPTR) const
返回包含给定复杂控件的指定subControl的矩形(具有由option指定的样式)。 矩形是在屏幕坐标中定义的。
option参数是指向QStyleOptionComplex或其子类之一的指针,并且可以使用qstyleoption_cast()函数强制转换为适当的类型。 有关详细信息,请参见drawComplexControl()。 该小部件是可选的,并且可以包含该功能的其他信息。
常用用法:
(1). 获取当前平台支持的原有的 QStyle
打印信息为: