QT 选择器

QSS不仅提供了同CSS中的盒子模型,同样也为QT提供了一套选择器。何为选择器?选择器就是样式作用的对象名称,比如把一个按钮QPushButton的背景色变成红色,那么这个QPushButton就是你的选择器。在QT中,主要提供了以下选择器:

  • 通用选择器
  • 类型选择器
  • 类选择器
  • ID选择器
  • 属性选择器
  • 包含选择器
  • 子元素选择器
  • 伪类选择器
  • Subcontrol选择器

下面来一一介绍上诉的选择器:

一、通用选择器

  通用选择器的最明显,以“*”表示,作用于全局的控件元素。如下:

*
{
    margin:0px;
    padding:0px;
    font: 6pt "黑体";
}

 二、类型选择器

     类型选择器,以类名作为选择器名称(选择器本身),作用于该元素以及其所有的子元素。比如:QFrame,(附QT的继承关系图)。

      

例: 

QFrame{
	background:gray;
}

效果如下:

                       

 QFrame,以及其子元素QLabel都受到了影响,背景色变成了gray。而QpushButton不是QFrame的子元素,所以不受影响。

三、类选择器

    类选择器,基本表达为"."+选择器(对象名称)。如:.QFrame。作用于选择器本身,或者说元素本身,不会影响其他的元素。

.QFrame{
	background:gray;
}

 注意:类型选择器和类选择器的不同点在于作用域的不同。

四、ID选择器

   ID选择器,基本表达式:"#"+objectName。作用于objectName元素。建议objectName是唯一的。

#bgBtn{
   background-image: url(:/new/prefix1/1.png); 
}

在Qt Designer中将QPushButton的objectName改成了bgBtn。

                                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

五、属性选择器

    属性选择器,有点类似key-value,基本的写法:选择器[level="名称"]。之后需要在代码中设置setProperty(key,value)。之后在重启程序后才会生效。简单示例一下:

//在qss文件中定义:
QPushButton[level="dangerous"]{
      background:red;
}

//在cpp文件中编写:
ui->pushButton->setProperty("level","dangerous");

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​

六、包含选择器

      包含选择器,选择器之间使用空格隔开,如:选择器1 选择器2 ...选择器N。它的作用域与以选择器1为首的所有子选择器。如同祖辈一样,无论敷衍了多少支系,源头还是一个,这些支系都受源头的影响。

QFrame QPushButton{
   border:2px solid magenta;
   border-radius:10px;
   background:white;
   padding:2px 15px;
}

        ​​​​​​​        ​​​​​​​        

QFrame作为源头,QPushButton作为支系,都会受其影响而改变样式。

七、子元素选择器 

    子元素选择器,选择器之间以>隔开。如选择器1>选择器2.其作用域如同父子关系,作用与其直接支系,旁系不受影响。

QFrame > QPushButton
{
	border:2px solid magenta;
   border-radius:10px;
   background:white;
   padding:2px 15px;
}

        ​​​​​​​        ​​​​​​​        

可以看到,QGroupBox中的QPushButton不受影响,因为其parent是QGroupBox。

八、伪类选择器

   伪类选择器,即:选择器::状态。同时支持链式规则,如:选择器::状态1::状态2::状态3。需要注意的是,因为使用的逻辑与,所以需要满足所有状态才会生效。

   常用的状态有:

:hover鼠标悬浮
:focus聚焦
:pressed鼠标下压

九、Subcontrol选择器

   选择器::subcontrol。是QT独有的一个选择器。具体的以后再说明。

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值