Qt样式表的格式问题

问题的引入

最近在进行样式设计的时候,发现了一个问题,具体如下:
我是将所有样式写到.qss文件里,然后读取文件的内容,再qApp->setStyleSheet();
代码如下:

QString qss;
QFile qssFile;
qssFile.setFileName(":/style1920.qss"); qssFile.open(QFile::ReadOnly);
if(qssFile.isOpen())
{
qss = QLatin1String(qssFile.readAll());
qApp->setStyleSheet(qss);
qssFile.close();
}

然后这里是的我样式表文件的部分:

EditInfo QPushButton#btnCancel, #btnConfirm, #btnReturn, #btnDel, #btnUpload
{
background: #004AA9;
border-radius: 4px;
font: 400 14px "Microsoft YaHei";
color: rgba(255, 255, 255, 1);
line-height: 24px;
} InfoCard QPushButton#btnEdt, #btnDel, #btnDetail
{
background-color: rgb(85, 255, 255);
border-radius: 4px;
}

我是创建了两个类,一个是EditInfo,一个是InfoCard,这两个类的ui里都有两个QPushButton,且objectName都为btnDel。
但是我发现,像上面这样写,按钮的样式都是后面的InfoCard的样式。我实在是写了一个EditInfo和InfoCard作为类选择器啊,为啥不起作用呢?

qss 选择器

qt的qss选择器的具体内容可以看这里:QSS 选择器-公孙二狗

问题所在

对于这个问题,突然我灵光一闪,是不是因为间隔一个逗号之后,选择器也要重新写,并不能接着前面的。然后我试了一下,

EditInfo QPushButton#btnCancel, #btnConfirm, #btnReturn, EditInfo QPushButton#btnDel, #btnUpload
{
background: #004AA9;
border-radius: 4px;
font: 400 14px "Microsoft YaHei";
color: rgba(255, 255, 255, 1);
line-height: 24px;
} InfoCard QPushButton#btnEdt, InfoCard QPushButton#btnDel, #btnDetail
{
background-color: rgb(85, 255, 255);
border-radius: 4px;
}

诶,就可以了。样式就变成了正常的了。
也就是说,我之前错误的原因是因为,我在逗号之后没有重新组合选择器,所以解析出来的就是,将objectName为btnDel的控件统统按照下面的样式设置,所以就出现了冲突。这也是对于qss的基础知识没有学好,所以说就吃了这个亏。
若要进行多个控件是同一个样式,就需要在逗号之后,重新进行选择器的组合。
但是也要强调的一点是,尽量让每一个控件的objectName都是唯一的,这样设置起来更方便。

Reference

The Style Sheet Syntax
QSS 选择器
QT qss选择器------ID 选择器

记一次QT的QSS多个控件设置同一个样式的问题的更多相关文章

  1. 基于Qt的第三方库和控件

    ====================== 基于Qt的第三方库和控件 ======================     libQxt --------   http://dev.libqxt.o ...

  2. Qt 界面使用自己定义控件 "提升为"

    1.效果图 我做了一个很easy的样例,一个能够显示颜色的QLabel,边上有个button,点击,跳出颜色选取的Dialog,然后选择一个颜色.这个QLabel会变成什么颜色. 2.ColorLab ...

  3. qt 在ui界面添加控件后在cpp文件中无法调用?

    问题:qt 在ui界面添加控件后在cpp文件中无法调用? 解决方法:在build选项中选择“重新build项目”,再次在cpp中调用添加的控件发现可以调用了. 还有一种情况导致添加控件后无法调用,就是 ...

  4. PyQt(Python+Qt)学习随笔:布局控件layout的layoutSizeConstraint属性不起作用的问题解决办法

    在<PyQt(Python+Qt)学习随笔:布局控件layout的layoutSizeConstraint属性>中介绍layout的layoutSizeConstraint属性后,反复测试 ...

  5. Qt QTableView 表格内添加控件

    目录 Qt QTableView 表格内添加控件 1. QItemDelegate 2. setIndexWidget 3. setIndexWidget + setLayout Qt QTableV ...

  6. Qt如何去掉按钮等控件的虚线框(焦点框)(三种办法)

    方法1:可以通过代码ui->pushButton->setFocusPolicy(Qt::NoFocus)或在Qt Creator的属性列表中设置. 方法2:如果在嵌入式设备中需要通过按键 ...

  7. Qt如何去掉按钮等控件的虚线框(焦点框)(两种方法)

    方法1:可以通过代码ui->pushButton->setFocusPolicy(Qt::NoFocus)或在Qt Creator的属性列表中设置. 方法2:如果在嵌入式设备中需要通过按键 ...

  8. Qt如何去掉按钮等控件的虚线框(焦点框)

    方法1:可以通过代码ui->pushButton->setFocusPolicy(Qt::NoFocus)或在Qt Creator的属性列表中设置. 方法2:如果在嵌入式设备中需要通过按键 ...

  9. Qt qml listview 列表视图控件(下拉刷新、上拉分页、滚动轴)

    Qt qml listview下拉刷新和上拉分页主要根据contentY来判断.但要加上顶部下拉指示器.滚动条,并封装成可简单调用的组件,着实花了我不少精力:) [先看效果]    [功能] 下拉刷新 ...

  10. Qt 环境下的mapx控件-------2

    今天花了一天的时间去查找mapx相关的资料,但是到最后想要的东西还是一无所获,不过还是学到了很多东西.下面以大家分享一下: mapx软件的安装:下载后安装mapx软件,成功后会在安装路径下存在acti ...

随机推荐

  1. consul discovery prefer-ip-address

    spring.cloud.consul.discovery.prefer-ip-address: 'true'

  2. [转]关于c#中遍历从数据库中取出的DataTable集合

    作为刚进入c#语言不久的小白,我们需要掌握的基本操作之DataTable集合.首先你需要一个sql语句,这里我就不写了,但是这里要注意,这个sql语句的目的是查出你需要的一张数据表,这个时候才会用到D ...

  3. canal源码分析简介-2

    3.0 server模块 server模块的核心接口是CanalServer,其有2个实现类CanalServerWithNetty.CanalServerWithEmbeded.关于CanalSer ...

  4. w3cschool-Storm 入门教程

    Storm 基础知识 基础知识 Storm 是一个分布式的,可靠的,容错的数据流处理系统.它会把工作任务委托给不同类型的组件,每个组件负责处理一项简单特定的任务.Storm 集群的输入流由一个被称作 ...

  5. MySQL如果数据存在则更新,不存在则插入

    如果数据存在则更新,不存在则插入,MySQL有duplicate.replace into.replace三种方式如何更新数据? insert ignore into 又是如何插入数据的呢? 准备表和 ...

  6. http 协议请求响应模型

    http 协议请求响应模型(一次请求生命周期或简单的软件分层) 场景: 登录 1.客户端发起请求到api接口层 1.1用户在客户端填写用户名和密码,点击登录,发送请求. 2.api接收到客户端发起的用 ...

  7. UTS Open '21 P6 - Terra Mater

    传送门 前言 本题是一道很好的"dp"题,无论是正难反易,还是模型转化都值得称赞,尤其是最后的神之一手,让我大脑宕机. 题意描述 给定一个长度为 \(N\) 的序列 \(H\),修 ...

  8. ubuntu配置笔记

    一.ubuntu的mnt/hgfs下共享文件夹设置 1.确认VMware Tools和共享目录设定已经完成,安装vmware tool sudo apt-get install open-vm-too ...

  9. uni-app之条件编译

    ifdef 仅出现在XXx平台上 仅出现在 App 平台下的代码 #ifdef APP-PLUS 需条件编译的代码 #endif <!-- 只在H5上有哈 --> <!-- #ifd ...

  10. GPU虚拟化技术简介:实现高性能图形处理的灵活部署

    本文分享自天翼云开发者社区<GPU虚拟化技术简介:实现高性能图形处理的灵活部署>,作者:z****n GPU虚拟化技术是一项重要的创新,通过将物理GPU划分为多个虚拟GPU,实现多用户共享 ...