记一次QT的QSS多个控件设置同一个样式的问题 |
您所在的位置:网站首页 › qss文件实例 › 记一次QT的QSS多个控件设置同一个样式的问题 |
文章目录
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都是唯一的,这样设置起来更方便。 ReferenceThe Style Sheet Syntax QSS 选择器 QT qss选择器------ID 选择器 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |