记一次QT的QSS多个控件设置同一个样式的问题

您所在的位置:网站首页 qss文件实例 记一次QT的QSS多个控件设置同一个样式的问题

记一次QT的QSS多个控件设置同一个样式的问题

#记一次QT的QSS多个控件设置同一个样式的问题| 来源: 网络整理| 查看: 265

文章目录 Qt样式表的格式问题问题的引入qss 选择器问题所在Reference

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 选择器



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3