容器和窗口的样式设置
本页是“控件样式参考”的一部分。有关元素树、屏幕截图和表格的说明,请参阅该页面。每个控件设置的通用状态标志和成员在“样式如何绘制控件”中列出。
选项卡控件和选项卡栏
QTabBar 通过样式绘制其选项卡。选项卡栏可以是QTabWidget 的一部分,也可以是独立存在的。独立的选项卡栏会自行绘制基线。在选项卡控件中,控件会绘制围绕窗格的边框,而选项卡栏则位于其上方。
QTabWidget 通过 `PE_FrameTabWidget ` 绘制 ` `,并使用 `QStyleOptionTabWidgetFrame`。它通过 `SE_TabWidgetTabPane`、`SE_TabWidgetTabContents`、`SE_TabWidgetTabBar`、`SE_TabWidgetLeftCorner` 和 `SE_TabWidgetRightCorner` 向样式查询标签栏、窗格、内容以及角控件的放置位置,并通过 `PM_TabBarBaseOverlap` 使标签栏与窗格重叠。
QTabBar 由其自身负责标签页的布局,因此样式无法控制标签页的位置。在布局过程中,标签栏会请求CT_TabBarTab ,其中包含PM_TabBarTabHSpace 和PM_TabBarTabVSpace ——即标签周围的额外宽度和高度。随后,它会使用CE_TabBarTab 和QStyleOptionTab 绘制每个标签页。选中的标签页最后绘制,以便样式可以将其绘制在相邻标签页之上。
PE_FrameTabBarBase(PM_TabBarBaseHeight,PM_TabBarBaseOverlap),用于独立的选项栏,其中QStyleOptionTabBarBaseCE_TabBarTab,每个标签页一次CE_TabBarTabShape(PM_TabBarTabOverlap)CE_TabBarTabLabel(SE_TabBarTabText,SE_TabBarTabLeftButton,SE_TabBarTabRightButton,PM_TabBarTabShiftHorizontal,PM_TabBarTabShiftVertical,PM_TabBarIconSize)
PE_IndicatorTabClose,由可关闭标签页的关闭按钮触发(SH_TabBar_CloseButtonPosition、PM_TabCloseIndicatorWidth、PM_TabCloseIndicatorHeight)PE_IndicatorTabTearLeft以及PE_IndicatorTabTearRight,其中标签页被滚动按钮截断(SE_TabBarTearIndicatorLeft,SE_TabBarTearIndicatorRight)
当标签无法完全显示时出现的滚动按钮位于tool buttons ;样式将其与SE_TabBarScrollLeftButton 和SE_TabBarScrollRightButton 居中对齐,并通过PM_TabBarScrollButtonWidth 设置其大小。该滚动条还参考了SH_TabBar_Alignment 、SH_TabBar_ElideMode 和SH_TabBar_PreferNoArrows 。

QTabBar 在每个标签页上设置以下状态标志:
| 状态 | 设置条件 |
|---|---|
State_Sunken | 按下该标签页时。 |
State_Selected | 该标签页为当前标签页。 |
State_HasFocus | 标签栏获得焦点且该标签页被选中时。 |
State_MouseOver | 鼠标悬停在该选项卡上。 |
即使标签栏处于启用状态,也可以禁用单个标签页。当标签栏处于活动状态时,该标签页即为活动标签页。QStyleOptionTab 的成员包括:
| 成员 | 描述 |
|---|---|
| shape | QTabBar::Shape 的值:圆角或三角形标签页,以及标签栏位于小部件的哪一侧。 |
| text | 选项卡文本。 |
| 图标 | 选项卡图标。 |
| iconSize | 图标的大小。 |
| row | 标签所在的行。Qt 的标签栏只有一行。 |
| position | 一个TabPosition 值:标签相对于其他标签的位置,或者当用户拖动标签时,其位置为Moving 。 |
| selectedPosition | 一个SelectedPosition 值,用于指示所选标签页是否紧邻此标签页,以及位于哪一侧。 |
| cornerWidgets | CornerWidget 枚举中的标志,用于指示标签栏包含哪些角控件。 |
| documentMode | 标签栏是否处于document mode 状态。 |
| leftButtonSize, rightButtonSize | 标签左右两侧按钮(如关闭按钮)的大小。 |
| features | TabFeature 枚举的标志:标签页是否具有边框,以及是否使用其最小尺寸提示。 |
| tabIndex | 该标签在标签栏中的索引。 |
QStyleOptionTabWidgetFrame 的成员包括:
| 成员 | 描述 |
|---|---|
| lineWidth | 绘制面板时的线宽。 |
| midLineWidth | 始终为 0。 |
| shape | 标签栏上标签的形状。 |
| tabBarSize | 标签栏的大小。 |
| tabBarRect | 标签栏的矩形区域。 |
| selectedTabRect | 选中标签页的矩形区域,以便框架能够与其连接。 |
| leftCornerWidgetSize, rightCornerWidgetSize | 若存在,则为角控件的大小。 |
QStyleOptionTabBarBase,用于PE_FrameTabBarBase ,包含成员shape 、tabBarRect 、selectedTabRect 和documentMode ,其含义相同。
组框
QGroupBox 绘制一个复合控件CC_GroupBox ,并带有QStyleOptionGroupBox 。它根据PM_IndicatorWidth 、PM_IndicatorHeight 和PM_CheckBoxLabelSpacing 计算其大小提示。
CC_GroupBoxSC_GroupBoxFrame(PE_FrameGroupBox)SC_GroupBoxLabel,使用drawItemText() 绘制,当该框获得焦点时,还会加上PE_FrameFocusRectSC_GroupBoxCheckBox(PE_IndicatorCheckBox),用于可选中复选框SC_GroupBoxContents,子控件的区域
样式提示SH_GroupBox_TextLabelVerticalAlignment 和SH_GroupBox_TextLabelColor 控制标题。Qt 并未规定复选框的具体绘制方式;QCommonStyle 使用PE_IndicatorCheckBox ,因此“复选框和单选按钮”下的元素树规则同样适用。

QGroupBox 设置以下状态标志:
| 状态 | 设置条件 |
|---|---|
State_On | 复选框被选中时。 |
State_Off | 复选框未被选中。不可选的组框既不设置State_On 也不设置State_Off 。 |
State_Sunken | 单击复选框或标题标签时。 |
QStyleOptionGroupBox 的其他成员包括:
| 成员 | 描述 |
|---|---|
| features | QStyleOptionFrame::FrameFeatures 描述框架的标志,例如用于扁平化组框的Flat 。 |
| lineWidth | 边框的线宽。始终为 1。 |
| midLineWidth | 始终为 0。 |
| text | 标题。 |
| textAlignment | 标题的对齐方式。 |
| textColor | SH_GroupBox_TextLabelColor 的值。只有当应用程序未在调色板中设置WindowText 画笔时,组框才会填充该值;否则该值将保持无效,QCommonStyle 将改用调色板。 |
分隔符
QSplitterHandle 绘制一个控件元素CE_Splitter ,并使用纯色QStyleOption 。分隔符通过CT_Splitter 和PM_SplitterWidth 调整其控制柄的大小,并调用SH_Splitter_OpaqueResize 来决定在用户拖动时是否调整子控件的大小。

该控件会自行填充选项内容,而非调用initFrom()方法。它设置了以下状态标志:
| 状态 | 设置条件 |
|---|---|
State_Horizontal | 拆分线为水平方向,因此手柄为垂直方向。 |
State_MouseOver | 鼠标悬停在控件上。 |
State_Sunken | 按下了控件。 |
State_Enabled | 手柄处于启用状态。 |
工具箱
QToolBox 用于存储一组小部件,并逐个显示,每个小部件对应一个标签按钮,采用垂直布局。每个按钮都通过 `CE_ToolBoxTab ` 并使用 `QStyleOptionToolBox` 绘制,且按钮使用 `PM_SmallIconSize ` 作为其图标。
CE_ToolBoxTab,每页一次CE_ToolBoxTabShapeCE_ToolBoxTabLabel(SE_ToolBoxTabContents)

标签按钮会设置以下状态标志:
| 状态 | 何时设置 |
|---|---|
State_Selected | 当前选中的标签页。 |
State_Sunken | 按下了 Tab 键。 |
QStyleOptionToolBox 的其他成员包括:
| 成员 | 描述 |
|---|---|
| 图标 | 选项卡上的图标。 |
| text | 选项卡上的文本。 |
| position | TabPosition 值:该选项卡相对于其他选项卡的位置。 |
| selectedPosition | 一个SelectedPosition 值,用于指示所选标签页是否紧邻此标签页,以及位于哪一侧。 |
工具栏
工具栏是main window framework 的一部分。主窗口有四个工具栏区域,每侧各一个,每个区域可容纳数行的工具栏。QMainWindow 负责定位工具栏,并填充其样式选项中的position成员。
QToolBar 使用QStyleOptionToolBar 绘制CE_ToolBar 。当工具栏浮动在其自己的窗口中时,还会在其周围绘制PE_FrameMenu 。可移动工具栏会绘制其手柄,而操作之间的分隔符是绘制PE_IndicatorToolBarSeparator 的小控件。
CE_ToolBar(PM_ToolBarFrameWidth,PM_ToolBarItemMargin,PM_ToolBarItemSpacing)PE_PanelToolBar
PE_FrameMenu,用于浮动工具栏PE_IndicatorToolBarHandle(SE_ToolBarHandle,PM_ToolBarHandleExtent)PE_IndicatorToolBarSeparator(PM_ToolBarSeparatorExtent),由每个分隔符绘制
工具栏中的工具按钮绘制CC_ToolButton ;参见“工具按钮”。其图标大小默认设置为PM_ToolBarIconSize 。当操作项目无法完全显示时,工具栏会显示一个扩展按钮,其图标为SP_ToolBarHorizontalExtensionButton 或SP_ToolBarVerticalExtensionButton ,大小由PM_ToolBarExtensionExtent 决定。

QToolBar 设置此状态标志:
| 状态 | 设置条件 |
|---|---|
State_Horizontal | 工具栏呈水平布局,即位于顶部或底部的工具栏区域。 |
当工具栏为水平布局时,分隔符使用带QStyleOption 的纯色样式,并设置State_Horizontal 。QStyleOptionToolBar 的其他成员包括:
| 成员 | 描述 |
|---|---|
| features | ToolBarFeature 标志:若工具栏可移动,则为Movable 。 |
| lineWidth | 工具栏边框的宽度。 |
| midLineWidth | 始终为 0。 |
| positionOfLine | 一个ToolBarPosition 值:工具栏内线在工具栏区域中的位置。 |
| positionWithinLine | 一个ToolBarPosition 值:工具栏在其行中的位置。 |
| toolBarArea | 工具栏所在的Qt::ToolBarArea 。 |
停靠小部件
QDockWidget 会使用CE_DockWidgetTitle 和QStyleOptionDockWidget 绘制其标题栏,除非应用程序安装了自定义标题栏控件,或者该Dock控件以浮动模式显示并带有原生窗口装饰。一个不带原生装饰的浮动Dock控件也会绘制PE_FrameDockWidget 。浮动和关闭按钮是工具按钮,它们绘制PE_PanelButtonTool ,并显示SP_TitleBarNormalButton 和SP_TitleBarCloseButton 图标。
PE_FrameDockWidget(PM_DockWidgetFrameWidth),当处于浮动状态时CE_DockWidgetTitle(SE_DockWidgetTitleBarText,SE_DockWidgetIcon,PM_DockWidgetTitleMargin)SE_DockWidgetFloatButton以及SE_DockWidgetCloseButton(PM_DockWidgetTitleBarButtonMargin) 时,按钮的位置
QMainWindow 会使用PE_IndicatorDockWidgetResizeHandle 在停靠的小部件之间绘制分隔线,其大小由PM_DockWidgetSeparatorExtent 决定。提示SH_DockWidget_ButtonsHaveFrame 决定标题栏按钮是否具有边框。

该标题栏选项除常见状态标志外,不设置其他状态标志。QStyleOptionDockWidget 的成员包括:
| 成员 | 描述 |
|---|---|
| title | 标题文本。 |
| closable | 该停靠控件是否可以关闭。 |
| 可移动 | 停靠控件是否可以移动到其他区域。 |
| 可浮动 | 该停靠控件是否可以浮动,即脱离其主窗口。 |
| verticalTitleBar | 标题栏是否沿左侧垂直绘制。 |
标题栏
标题栏复合控件(CC_TitleBar )用于绘制QMdiArea 中子窗口的标题栏。它由窗口标题、系统菜单以及最小化、最大化及关闭按钮组成。某些样式还提供用于遮蔽窗口和显示上下文相关帮助的按钮。
CC_TitleBar(PM_TitleBarHeight,PM_TitleBarButtonSize,PM_TitleBarButtonIconSize)SC_TitleBarSysMenuSC_TitleBarLabelSC_TitleBarMinButton,SC_TitleBarMaxButton,SC_TitleBarCloseButton,SC_TitleBarNormalButtonSC_TitleBarShadeButton,SC_TitleBarUnshadeButton,SC_TitleBarContextHelpButton
QCommonStyle 使用PE_PanelButtonTool 以及从SP_TitleBarMenuButton 到SP_TitleBarContextHelpButton 中的对应标准图标绘制每个按钮。当子窗口被最大化时,QMdiSubWindow 会将其按钮移至主窗口的菜单栏中,并使用CC_MdiControls 以及子控件SC_MdiMinButton 、SC_MdiNormalButton 和SC_MdiCloseButton 进行绘制。

QStyleOptionTitleBar 的成员包括:
| 成员 | 描述 |
|---|---|
| text | 标题文本。 |
| 图标 | 窗口图标。 |
| titleBarFlags | Qt::WindowFlags 用于指定标题栏包含哪些按钮。 |
| titleBarState | 窗口的QWidget::windowState(),用于决定显示最大化按钮还是恢复按钮。 |
大小控点
QSizeGrip 绘制一个控件元素,即CE_SizeGrip ,并使用QStyleOptionSizeGrip 设置其大小,同时通过CT_SizeGrip 计算其大小提示。QStatusBar 默认会在其角落显示一个大小抓手。

该大小控点除常见状态标志外,不设置其他状态标志。QStyleOptionSizeGrip 拥有一个专属成员:
| 成员 | 描述 |
|---|---|
| corner | 一个Qt::Corner 值:控点所在的窗口角。 |
橡皮筋
QRubberBand 绘制一个控件元素CE_RubberBand ,并为其添加QStyleOptionRubberBand 。样式可通过SH_RubberBand_Mask 样式提示来调整该带的形状。

该控件除常见状态标志外,不设置其他状态标志。QStyleOptionRubberBand 的成员包括:
| 成员 | 描述 |
|---|---|
| shape | 一个QRubberBand::Shape 值:矩形或直线。 |
| opaque | 该条带是否必须以不透明方式绘制。 |
另请参阅 《控件样式参考》、《按钮和输入控件的样式设置》以及《菜单和项目视图的样式设置》。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.