记一次QT的QSS多个控件设置同一个样式的问题
文章目录
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多个控件设置同一个样式的问题的更多相关文章
- 基于Qt的第三方库和控件
====================== 基于Qt的第三方库和控件 ====================== libQxt -------- http://dev.libqxt.o ...
- Qt 界面使用自己定义控件 "提升为"
1.效果图 我做了一个很easy的样例,一个能够显示颜色的QLabel,边上有个button,点击,跳出颜色选取的Dialog,然后选择一个颜色.这个QLabel会变成什么颜色. 2.ColorLab ...
- qt 在ui界面添加控件后在cpp文件中无法调用?
问题:qt 在ui界面添加控件后在cpp文件中无法调用? 解决方法:在build选项中选择“重新build项目”,再次在cpp中调用添加的控件发现可以调用了. 还有一种情况导致添加控件后无法调用,就是 ...
- PyQt(Python+Qt)学习随笔:布局控件layout的layoutSizeConstraint属性不起作用的问题解决办法
在<PyQt(Python+Qt)学习随笔:布局控件layout的layoutSizeConstraint属性>中介绍layout的layoutSizeConstraint属性后,反复测试 ...
- Qt QTableView 表格内添加控件
目录 Qt QTableView 表格内添加控件 1. QItemDelegate 2. setIndexWidget 3. setIndexWidget + setLayout Qt QTableV ...
- Qt如何去掉按钮等控件的虚线框(焦点框)(三种办法)
方法1:可以通过代码ui->pushButton->setFocusPolicy(Qt::NoFocus)或在Qt Creator的属性列表中设置. 方法2:如果在嵌入式设备中需要通过按键 ...
- Qt如何去掉按钮等控件的虚线框(焦点框)(两种方法)
方法1:可以通过代码ui->pushButton->setFocusPolicy(Qt::NoFocus)或在Qt Creator的属性列表中设置. 方法2:如果在嵌入式设备中需要通过按键 ...
- Qt如何去掉按钮等控件的虚线框(焦点框)
方法1:可以通过代码ui->pushButton->setFocusPolicy(Qt::NoFocus)或在Qt Creator的属性列表中设置. 方法2:如果在嵌入式设备中需要通过按键 ...
- Qt qml listview 列表视图控件(下拉刷新、上拉分页、滚动轴)
Qt qml listview下拉刷新和上拉分页主要根据contentY来判断.但要加上顶部下拉指示器.滚动条,并封装成可简单调用的组件,着实花了我不少精力:) [先看效果] [功能] 下拉刷新 ...
- Qt 环境下的mapx控件-------2
今天花了一天的时间去查找mapx相关的资料,但是到最后想要的东西还是一无所获,不过还是学到了很多东西.下面以大家分享一下: mapx软件的安装:下载后安装mapx软件,成功后会在安装路径下存在acti ...
随机推荐
- Qt/C++原创项目作品精选(祖传原创/性能凶残/界面精美)
00 前言说明 从事Qt开发十年有余,一开始是做C#.NET开发的,因为项目需要,转行做嵌入式linux开发,在嵌入式linux上做可视化界面开发一般首选Qt,当然现在可选的方案很多比如安卓,但是十多 ...
- Qt开源作品27-鼠标定位十字线
一.前言 上次有个群友在咨询这个问题,如何用Qt绘制一个鼠标定位的十字线,花了两分钟整了个,最没有含金量的一个demo,就是用drawline绘制了两条线,这个效果在经典的CAD软件中很常用,还有一些 ...
- LRU的map+双链表实现(Go描述)
面云账户时候问了LRU,具体实现的方式是map+双链表.Set和Get的时间复杂度都是O(1).完整写一遍复习一下, 仅作记录 /** * @Author: lzw5399 * @Date: 2021 ...
- 前端开发常用git命令详细版
1.新建代码库 当前目录创建一个git代码库 git init 新建一个目录文件 将其初始化为git代码库 git init [pro-name] 远端拉去项目 git clone [url] 2.基 ...
- 使用Emgu.CV开发视频播放器简述
OpenCV是大名鼎鼎的视觉处理库,其对应的c#版本为Emgu.CV.本人采用Emgu.CV开发了一款视频播放软件,可对本地视频文件和rstp在线视频流播放,还具有对视频局部区域放大功能.虽然功能比较 ...
- CF div3 991(A~G)
蒟蒻的第一篇题解.由于正值期末周,只能匆忙地vp了一场div3,并只出了A~E. A 白给模拟题,但也是失误很大的一个题(7分钟时才出,属实是太慢了...) B 一道典题,之前做过类似的. 统计所有数 ...
- WPFMediaKit --WPF项目中 调用摄像头拍照
<Window x:Class="WpfApp1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/200 ...
- Java8新特性时间日期库
Java8新特性的功能已经更新了不少篇幅了,今天重点讲解时间日期库中DateTime相关处理.同样的,如果你现在依旧在项目中使用传统Date.Calendar和SimpleDateFormat等API ...
- RocketMQ的架构设计、关键特性、与应用场景详解
内容大纲: 1.RocketMQ的简介与演进 2. RocketMQ的架构设计 3.RocketMQ的关键特性 4.RocketMQ的应用场景 RocketMQ的简介 RocketMQ一个纯java. ...
- javascript对象学习笔记
目前所见的,在普通的JavaScript应用中和绝大多数人一样使用的是全局的方式.大概是因为JavaScript所定义的变量或函数默认就是全局的.为了是代码不至于太凌乱,变量不至于稀里糊涂的就被人重定 ...