Qt之样式表QSS

使用Qt样式表

   Qt的样式表主要是受到了CSS的启发。因为样式表是一种在运行时解释的普通文本文件,使用它们不需要具备任何编程知识。样式表作用于上层的当前激活的QStyle上(例如QWindowsVistaStyle)。因为创建样式表不引入任何子类,所以它们适合对现有窗口部件做微小的定制。

与调色板相比

  使用样式表比修改窗口部件的调色板更可靠性。这是因为QPalette中的实体(Base、Button、Highlight,等等)在不同样式中的用法不一样的。例如,QWindowsStyle用Base调色板实体填充只读组合框的背景,然而,QPlastqueStyle使用Button实体完成这一功能。此外,有些样式使用硬编码的图像呈现某个元素,从而跳过了调色板。相反,样式表则保证了无论激活的是哪种样式,都可以使用指定的颜色。

基本语法

1、样式表单由一系列样式规则组成。如下图所示:

这里写图片描述 
QLineEdit称为选择器(selector),background-color是属性,yellow是属性值。
注意:Qt的样式表语法不区分大小写,所以color,Color,coLor,coloR都表示同样的颜色属性。但是指代类的类名的时候,是区分大小写的。

2、多个选择器可以并列使用,之间用逗号隔开。如下图所示:

这里写图片描述

3、前面的选择器都是类的名字,还有其他的一些可以使用的选择器。样式表选择器如下图所示:

这里写图片描述
例如,为了选择所有称作“okButton”的QPushButton,它们的x和y属性为0,名为“frame”的QFrame直接对象,可以这样写:
这里写图片描述

4、可以通过辅助控制器(subcontrol)控制外观,最常见的自定义辅助控制器如下图所示:

这里写图片描述
例如:复选框和单选按钮的状态指示器的大小为20*20像素:
这里写图片描述

5、除了辅助控制器,样式表还可以用来指定窗口部件的各个状态。窗口部件中一些可以访问样式表的状态如下图所示:

这里写图片描述
例如:当鼠标在复选框的文本上悬停时,用白色指定它的:hover状态:
这里写图片描述

6、大多数的Qt窗口部件都可以支持如下图所示的盒子模型。此模型可以指定4个影响布局的矩形,从而绘制一个自定义的窗口。

这里写图片描述

  1. contents rectangle是最里面的矩形。它是绘制窗口部件内容(例如文字或图片)的地方。
  2. padding 包围contents rectangle。它负责由padding属性指定填充操作。
  3. border rectangle 包围 padding rectangle。它为边界预留空间。
  4. margin rectangle是最外边的矩形。它包围border rectangle,负责任何指定的边缘空白区域。
    对于没有padding、border和margin的普通窗口部件,这四个矩形重合在一起。
    例如:padding属性允许我们指定窗口部件的上边、右边、下边和左边的填充空间。
    这里写图片描述

7、如果想窗口部件可以缩放,背景使用CSS的边界图(border image)机制定义。

  与使用background-image定义的背景图像不同,边界图被分隔成3*3的小格,如下图所示。当填充窗口部件背景时,四个角(图中的格子A、C、G和I)保持不变,其他五个格子被拉伸或平铺,填充可用空间。
这里写图片描述

使用border-image属性可以指定各个边界面,它要求指定一个图像文件名和定义九个格子的四条“切线”。切线用其到上、右、下和左边缘的距离定义。border.png作为边界图,距离上、右、下和左边缘的切线为4、8、12和16,应该这样定义:
border-image: url(border.png) 4 8 12 16;
当使用边界面时,必须显式地设置border-width属性。一般情况下,border-width应该与切线的位置一致;否则,为了与border-width相符合,角上的格子将被拉伸或缩短。对于border.png的例子,应该这样指定边框宽度:
border-width: 4px 8px 12px 16px;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值