样式¶
Qt 的内置小部件使用 QStyle
类来执行几乎所有的绘制操作。QStyle
是一个抽象基类,它封装了 GUI 的外观和感觉,可以用来使小部件看起来与等效的原生小部件完全相同,或者为小部件提供自定义外观。
Qt 提供了一组 QStyle
子类,这些子类模拟了 Qt 支持的不同平台的原生外观(QWindowsStyle、QMacStyle 等)。这些样式内置在 Qt GUI 模块中,其他样式可以通过 Qt 的插件机制提供。
大多数用于绘制样式元素的函数接受四个参数:
一个枚举值,指定要绘制的图形元素
一个
QStyleOption
对象,指定如何以及在哪里渲染该元素一个应该用于绘制元素的QPainter对象
一个
QWidget
对象,用于在其上进行绘制(可选)
样式从QStyleOption
类中获取渲染图形元素所需的所有信息。小部件作为最后一个参数传递,以防样式需要它来执行特殊效果(例如macOS上的动画默认按钮),但这不是强制性的。实际上,QStyle
可以用于在任何绘图设备上绘制(不仅仅是小部件),在这种情况下,小部件参数是一个零指针。
绘图系统还提供了继承自QPainter的QStylePainter
类。QStylePainter
是一个方便类,用于在小部件内绘制QStyle
元素,并通过一组在QStyle
的API之上实现的高级绘图函数扩展了QPainter。使用QStylePainter
的优势在于参数列表显著缩短。
QIcon
QIcon 类提供了不同模式和状态下的可缩放图标。
QIcon 可以生成反映图标状态、模式和尺寸的像素图。这些像素图是从提供给图标的像素图集中生成的,并被 Qt 小部件用来显示代表特定操作的图标。
QIcon 对象的渲染由 QIconEngine 类处理。每个图标都有一个对应的图标引擎,负责以请求的尺寸、模式和状态绘制图标。
有关小部件样式和外观的更多信息,请参阅样式和样式感知小部件。