qtabwidget 高度_QStyle Tabs QTabWidget QTabBar样式设计 (十)

本文介绍了Qt中QTabWidget和QTabBar的样式设计,包括选项卡的高度、布局以及如何通过样式控制选项卡的显示。QTabBar在布局选项卡时会参考PM_TabBarTabHSpace和PM_TabBarTabVSpace的样式参数。当选项卡不适用时,QTabBar会绘制滚动按钮,这些按钮是QToolButtons并由样式绘制。此外,文章提到了QStyleOptionTab和QStyleOptionTabV2在表示选项卡信息中的作用,以及QTabBar上状态的变化和成员表的内容。
摘要由CSDN通过智能技术生成

在Qt中,QTabBar使用样式绘制其选项卡。 选项卡存在于包含QTabBar的QTabWidget中,也可以作为单独的栏存在。

如果该栏不是选项卡小部件的一部分,它将绘制自己的基数。QTabBar布局选项卡,因此样式无法控制选项卡的放置。

但是,在布局其选项卡时,该栏会询问PM_TabBarTabHSpace和PM_TabBarTabVSpace的样式,该样式在选项卡栏选项卡标签的最小尺寸(图标和文本)上超出了宽度和高度。

样式还可以在布局前进一步影响选项卡的大小,因为选项卡栏要求提供CT_TabBarTab。杆的边界矩形是通过当它是微件(仍在考虑CT_TabBarTab)的一部分的标签窗口小部件决定。

当所有选项卡都不适合时,选项卡栏负责绘制出现在选项卡栏上的按钮。 它们的位置不受样式控制,但是按钮是QToolButtons,因此由样式绘制。

这是QTabWidget和QTabBar的样式结构:

虚线表示QTabWidget包含一个标签栏,但自身不绘制,QTabBar仅在不属于标签小部件的情况下绘制其基线,并且该标签栏保留两个工具按钮,当所有标签页都滚动时 不合适; 有关其元素树,请参见工具按钮。

另请注意,由于按钮是选项卡栏的子项,因此它们会在栏的后面绘制。 包围矩形的制表符通过PM_TabBarBaseOverlap与底部重叠。

这是Java风格的选项卡小部件:

在Java样式(以及Windows)中,标签栏的形状和标签的边界矩形与CE_TabBarTab相同。请注意,选项卡与选项卡小部件框架重叠。标签栏(如果已绘制)的底部是标签和框架重叠的区域。

选项卡的样式选项(QStyleOptionTab)包含图形选项卡的必要信息。该选项包含选项卡在选项卡栏中的位置,所选选项卡的位置,选项卡的形状,文本和图标。在Qt 4.1之后,该选项应转换为QStyleOptionTabV2,其中还包含图标大小。

由于Java样式选项卡不重叠,因此我们还以Windows样式显示了选项卡小部件的图像。请注意,如果希望选项卡水平重叠,请在CE_TabBarTabShape中绘制选项卡时执行此操作。

选项卡边界矩形将不会被选项卡栏更改。这些选项卡以北选项卡栏形状从左到右绘制,以东部选项卡栏形状从上到下,等等。

最后绘制所选的选项卡,这样很容易将其绘制在其他选项卡上(如果是更大)。

标签栏可以在其标签上设置的状态表如下:

StateState Set When

State_Sunken

用鼠标按下该选项卡。

State_Selected

如果是当前选项卡。

State_HasFocus

标签栏具有焦点,并且已选择标签

请注意,即使选项卡栏未被禁用,单个选项卡也可能被禁用。 如果选项卡栏处于活动状态,则该选项卡将处于活动状态。

以下是QStyleOptionTabV2的成员表:

MemberContent

cornerWidgets

是CornerWidget枚举的标志,指示标签栏是否以及具有哪个角小部件。

icon

选项卡的QIcon

iconSize

图标的QSize

position

一个TabPosition枚举值,指示相对于其他选项卡,该选项卡在栏中的位置。

row

保存选项卡所在的行

selectedPosition

SelectedPosition枚举的值,它指示选定的选项卡与该选项卡相邻还是该选项卡。

shape

QTabBar :: Shape枚举的值指示该选项卡是圆角还是三角形以及选项卡的方向。

text

标签文字

选项卡小部件的框架使用QStyleOptionTabWidgetFrame作为样式选项。 我们在这里列出其成员。 除了通用标志外,它没有设置状态。

Membercontent

leftCornerWidgetSize

左上角小部件的QSize(如果有)。

rightCornerWidgetSize

右上角小部件的QSize(如果有)。

lineWidth

保持与绘制面板的线。

midLineWith

该值当前始终为0。

shape

标签栏上标签的形状。

tabBarSize

标签栏的QSize。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值