【QT入门】 Qt自定义控件与样式设计之qss选择器

往期回顾:

【QT入门】 无边框窗口设计综合运用之自定义标题栏带圆角阴影的窗口-CSDN博客

【QT入门】 无边框窗口设计之综合运用,实现WPS的tab页面-CSDN博客

【QT入门】Qt自定义控件与样式设计之qss介绍(Qt style sheet)-CSDN博客

【QT入门】 Qt自定义控件与样式设计之qss选择器

一、什么是qss选择器

QSS选择器是Qt Style Sheets的一部分,用于选择Qt应用程序中的UI元素并为其应用样式。类似于CSS选择器,QSS选择器允许我们根据特定的条件选择UI元素,并为其设置样式,从而定制应用程序的外观和风格。通过QSS选择器,我们就可以轻松地修改Qt应用程序的外观,使其更符合用户需求或应用程序设计风格。

二、常见选择器

1、通配符选择器

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

复制代码
* {
        background-color:yellow;
}

或者指明子类,注意*和子类名之间有空格的

复制代码
* QPushButton{
        background-color:yellow;
}

另外这里指明子类是可以指明多个的,比如

复制代码
* QPushButton, QLabel{
        background-color:yellow;
}

2、类型选择器

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

复制代码
QWidget {
        background-color:yellow
}

此时所有的控件背景颜色都会是这个,因为QWidget是所有ui控件的最高类

如果想防止子类,例如窗口被修改,可以设置属性,这个我们很早之前就提过

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

类选择器也是通过控件类型来匹配控件的,**但不同的是不包含子类**,语法是在类前面加了个.(是个点)这样就只对QWidget生效,如果界面上有其它控件则不生效。

复制代码
.QWidget {
        background-color:yellow
}
注意类前面有个点

3、ID选择器

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

怎么个事呢,因为每个控件都有自己的objectname,当我想指定给某个控件添加样式的时候,就可以用这个id选择器,#前面是类名,后面是控件的objectname

复制代码
QPushButton#pushbutton_2{
        background-color:yellow;
}

4、属性选择器

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

4.1qt代码
复制代码
label1.setProperty('notice_level','error')
label2.setProperty('notice_level','warning')
4.2qss样式
复制代码
.QLabel {
        background-color:pink;
}

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

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

这里还有个用法,就是qss内只定义属性值,只要有这个属性的控件就可以被选中,也就是说,只要有novice_level这个属性的控件都是生效的。

复制代码
.QLabel [notice_level]{
        background-color:pink;
}

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

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

都看到这里了,点个赞再走呗朋友~

加油吧,预祝大家变得更强!

相关推荐
小小编程路16 分钟前
C++ 异常 完整讲解
开发语言·c++
AI科技星1 小时前
数术工坊 · 第四卷 橡皮泥江湖(拓扑学)【完整定稿】
c语言·开发语言·汇编·electron·概率论·拓扑学
张忠琳1 小时前
【Go 1.26.4】Golang Select 深度解析
开发语言·后端·golang
AC赳赳老秦2 小时前
OpenClaw+Power Apps 实战:自动生成 Power Apps 应用、连接 Excel 数据源
大数据·开发语言·python·serverless·excel·deepseek·openclaw
提笔了无痕2 小时前
如何用Go实现整套RAG流程
开发语言·后端·golang
(Charon)2 小时前
【C++ 面试高频基础:指针、引用、const、static、new/delete 总结】
java·开发语言
2601_961875243 小时前
法考考试时间安排及科目|时间表|资料已整理
开发语言·c#·inverted-index·suffix-tree·sstable·r-tree·lsm-tree
AI科技星3 小时前
数术工坊第八卷:算力革命
c语言·开发语言·网络·量子计算·agi
金色熊族3 小时前
QTransform使用心得(二)--仿射变换、非仿射变换、矩阵
qt·线性代数·矩阵
geovindu3 小时前
go: Generators Pattern
开发语言·后端·设计模式·golang·生成器模式