使用样式表自定义Qt小部件(摘自Qt帮助文档)

时间:2022-06-10 02:04:43

盒子模型

使用样式表自定义Qt小部件(摘自Qt帮助文档)

  • 边距,边框宽度和填充属性均默认为零。

  • 可以使用background-image属性指定部件的背景。 默认情况下,仅为边框内的区域绘制背景图像。这可以使用background-clip属性更改。您可以使用background-repeat和background-origin来控制背景图像的重复和起始。

  • 背景图像(background-image)不会随着部件的大小而缩放。 要提供与外观尺寸一起缩放的“皮肤”或背景,必须使用边框图像(background-image)。 由于border-image属性提供备用背景,因此在指定border-image时不需要指定背景图像。 在这种情况下,当指定了它们时,边框图像将在背景图像上绘制。
  • 此外,图像属性(image)可以用于在边框图像(border-image)上绘制图像。 指定的图像不会平铺或拉伸,并且当其大小与窗口部件的大小不匹配时,其对齐方式将使用image-position属性指定。 与背景图像和边框图像不同,可以在图像属性中指定SVG,在这种情况下,图像将根据窗口大小自动缩放。
    • 设置整个渲染操作的剪辑(border-radius)
    • 绘制背景(background-image)
    • 绘制边框(border-image,border)
    • 绘制叠加图像(image)

子控件

  • 部件被认为是彼此顶部绘制的子控件的层次结构(树)。 例如,QComboBox绘制下拉子控件,后跟向下箭头子控件。 因此,QComboBox呈现如下:
    • Render the QComboBox { } rule
    • Render the QComboBox::drop-down { } rule
    • Render the QComboBox::down-arrow { } rule
  • 子控件共享父子关系。 在QComboBox的情况下,向下箭头的父级是下拉菜单,下拉列表的父级是部件本身。 子控件使用 subcontrol-position 和 subcontrol-origin属性位于其父级中。
  • 一旦位置确定,子控件可以使用盒子模型进行样式化。
  • 使用诸如QComboBox和QScrollBar的复杂部件,如果一个属性或子控件被自定义,则所有其他属性或子控件也必须进行自定义。