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