qss选择器

选择器决定了 style sheet 作用于哪些 Widget,

QSS 的选择器有:
  • 通用选择器 *
  • 类型选择器
  • 类选择器
  • ID 选择器
  • 属性选择器
  • 包含选择器
  • 子元素选择器
  • 伪类选择器
  • Subcontrol 选择器

我们了解一下其中较为常用的几类选择器:

1 通配符选择器

匹配所有的控件,用星号表示

*
{
    background-color: red;
}

可以发现,所有的控件都已经变成红色了,也可以在*后面指定子类,如下所示:

* QLabel
{
	background-color: rgb(54, 54, 54);
	color: rgb(230, 230, 230);
	font: bold 18px "Microsoft YaHei";	
	border-top-style: solid;
	border-top-width: 2px;
	border-top-color: red;
	border-top: 2px solid red;
	border-right-style: solid;
	border-right-width: 3px;
	border-right-color: green;
	border-right: 3px solid green;
	border-bottom-style: solid;
	border-bottom-width: 2px;
	border-bottom-color: blue;
	border-bottom: 2px solid blue;
	border-left-style: solid;
	border-left-width: 3px;
	border-left-color: aqua;
	border-left: 3px solid aqua;
	border-radius: 10px;
	padding-left: 0px;
}
QLabel:hover
{
	color: red;
	background-color: green;
}

可以发现,所有的QLabel都被渲染成功了。

2 类型选择器

通过控件类型来匹配控件的(包括子类)

QWidget {
        background-color:yellow
}

 如果想防止子类,例如窗口被修改,可以设置属性

//禁止父窗口影响子窗口样式
setAttribute(Qt::WA_StyledBackground);

 类选择器也是通过控件类型来匹配控件的,但不同的是不包含子类,语法是在类前面加了个.

.QWidget
{
    background-color: yellow;/*所有的Widget背景色都会变成黄色,不包括主窗口*/
}

3 ID选择器

ID选择器是结合控件的objectname来匹配控件的,qss里objectname前加个#来表示,不同控件的objectname是可以相同的

#blue {
        background-color:blue
}

4 属性选择器

属性选择器是结合控件的属性值来匹配控件的,首先要设定控件的属性,qss里属性用[proterty = attitude]来限制

qt:
 

label1.setProperty('notice_level','error')
label2.setProperty('notice_level','warning')

qss:

.QLabel {
        background-color:pink;
}

.QLabel[notice_level='warning'] {
        border:5px solid yellow;
}

.QLabel[notice_level='error'] {
        border:5px solid red;
}

这里还有个用法,就是qss内只定义属性值,只要有这个属性的控件就可以被选中

.QLabel [notice_level]{
        background-color:pink;
}

.QLabel[notice_level='warning'] {
        border:5px solid yellow;
}

.QLabel[notice_level='error'] {
        border:5px solid red;
}

只要有novice_level这个属性的控价都是生效的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值