QStyle 实现机制 (二)
QStyle的API包含绘制小部件的功能,用于执行常见和困难任务的静态辅助功能(例如,计算滑块手柄的位置)以及在绘制时进行各种必要的计算的功能(例如,用于小部件计算其尺寸的函数)提示)。
该样式还可以帮助某些小部件调整其内容的布局。此外,它还会创建一个包含用于绘制的QBrush的QPalette。
QStyle绘制图形元素;元素是小部件或小部件部件,例如按钮斜角,窗框或滚动条。
现在,大多数绘图函数采用四个参数:
a) 一个枚举值,指定要绘制的图形元素
b) 一个QStyleOption指定如何以及在哪里渲染该元素
c) 一个QPainter应该用来绘制元素
d) 在其上执行绘图的QWidget(可选)
当小部件要求样式绘制元素时,它会为样式提供QStyleOption,这是一个类,其中包含绘制所需的信息。
由于使用了QStyleOption,可以制作QStyle绘制窗口小部件,而无需链接该窗口小部件的任何代码。
这样就可以在任何绘画设备上使用QStyle的绘制功能。
也就是说,您可以在任何窗口小部件上绘制一个组合框,而不仅仅是QComboBox上。
如果样式需要其执行特殊效果(例如Mac OS X上的动画默认按钮),则将其作为最后一个参数传递,但这不是强制性的。
在本节中,我们将研究样式元素,样式选项和QStyle的功能。最后,我们描述如何使用调色板。
项目视图中的项目由Qt中的代表绘制。项目视图标题仍按样式绘制。Qt的默认委托人QStyledItemDelegate通过当前样式部分绘制其项目。
它绘制复选框指示符,并为该项所组成的元素计算边界矩形。在本文档中,我们仅描述如何实现QStyle子类。
如果要添加对QStyledItemDelegate支持的数据类型以外的其他数据类型的支持,则需要实现自定义委托。
请注意,必须以编程方式为每个小部件设置代表(即,不能将默认代表作为插件提供)。