使用样式表自定义Qt Widgets

26 阅读2分钟

使用样式表时,每个部件都被视为一个具有四个同心矩形的方框:边距矩形、边框矩形、填充矩形和内容矩形。

image.png

  • 边距位于边框之外。
  • 边框位于边距和填充之间。
  • 填充位于边框内,在边框和实际内容之间。
  • 内容指的是去除边距、边框和填充后,原始部件或子控件所剩下的内容。

marginborder-width 和padding属性的默认值均为零在这种情况下,所有四个矩形 (margin,border,padding, 和content) 都完全重合。

您可以使用background-image属性为 widget 指定背景。默认情况下,只在边框内的区域绘制背景图片。可以使用background-clip属性来更改。您可以使用background-repeatbackground-origin 来控制背景图片的重复和原点。

背景图片不会随 widget 的大小而缩放。要提供一个能随窗口部件尺寸缩放的 "皮肤 "或背景,就必须使用border-image。由于 border-image 属性提供了另一种背景,因此在指定 border-image 时不需要指定背景图片。如果同时指定了这两个属性,则 border-image 会在 background-image 上绘制。

此外,还可以使用图像属性在 border-image 上绘制图像。指定的图像不会平铺或拉伸,当其大小与 widget 的大小不一致时,可使用image-position属性指定其对齐方式。与 background-image 和 border-image 不同的是,可以在图像属性中指定 SVG,在这种情况下,图像会根据 widget 的大小自动缩放。

渲染规则的步骤如下:

  • 为整个渲染操作设置剪辑(border-radius)
  • 绘制背景(background-image)
  • 绘制边框(边框图像、边框)
  • 绘制覆盖图像(图像)