QStyle 小部件样式设计 (八)

样式设计方法:

在本节中,我们将研究Qt的大多数小部件的样式。希望这将节省您在开发自己的样式和小部件时的时间和精力。

您在这里找不到其他地方无法获得的信息(即,通过检查与样式相关的类的源代码或类描述)。

每个小部件都有以下内容:

带有其样式选项的成员(变量等)的表。

可以在窗口小部件上设置状态标志(QStyle :: StateFlag)的表格以及设置状态的时间。

它的元素树(请参见样式元素部分)。

小部件的图像,其中概述了元素。

元素树包含原始,控件和复杂的样式元素。通过对元素树进行自上而下的遍历,可以得出绘制元素的顺序。在节点中,我们编写了在绘制节点元素时应考虑的子元素矩形,子控制元素和像素度量。

 

我们的样式设计方法以小部件的绘制为中心。绘制过程中使用的子元素矩形,子控件和像素度量的计算仅作为元素树中的内容列出。

 

 

通用小部件属性:

一些状态和变量对于所有小部件都是通用的。 这些通过QStyleOption :: initFrom()设置。 并非所有元素都使用此功能。

具有常见状态的表如下:

StateState Set When
State_Enabled 设置是否未禁用小部件(请参阅QWidget :: setEnabled())
State_Focus 设置小部件是否具有焦点(请参阅QWidget :: hasFocus())
State_KeyobordFocusChange 当用户使用键盘更改焦点时设置(请参阅Qt :: WA_KeyboardFocusChange)
State_MouseOver 设置鼠标光标是否在小部件上
State_Active 设置小部件是否为活动窗口的子级。
State_HasEditFocus 设置小部件是否具有编辑焦点

小部件的其他常见成员是:

MemberContent
rect 要绘制的元素的边界矩形。 这设置为小部件边界矩形(QWidget :: rect())。
direction 布局方向; Qt :: LayoutDirection枚举的值。
palette 绘制元素时要使用的QPalette。 这设置为窗口小部件面板(QWidget :: palette())。
fontMetrics 在小部件上绘制文本时要使用的QFontMetrics。

 

用于复杂样式元素的复杂样式选项(继承QStyleOptionComplex的类)共享两个变量:subControls和activeSubControls。

这两个变量都是QStyle :: SubControl枚举值的或运算组合。 它们指示复杂控件包含哪些子控件,以及哪些控件当前处于活动状态。

如前所述,样式计算小部件内容的大小,小部件从中计算大小提示。 此外,复杂的控件还使用该样式来测试鼠标悬停在哪个子控件上。

posted @ 2020-11-03 22:49  流浪侠客  阅读(318)  评论(0编辑  收藏  举报