Qt 样式表错误?
Posted
技术标签:
【中文标题】Qt 样式表错误?【英文标题】:Qt style sheets bugs? 【发布时间】:2011-11-02 05:51:03 【问题描述】:我在简单的 QSS(Qt 样式表)中有很多错误。是Qt的bug吗?
例子:
样式表:
#check1
color: red //didn't work here
#check2
color: red; //but work here
background-color: black
#label1
color: blue;
text-decoration: underline //work fine here
#label2:hover
color: blue;
text-decoration: underline //but didn't work here
来源:
#include <QtGui>
int main(int argc, char *argv[])
QApplication app(argc, argv);
app.setStyleSheet(" #check1 color: red \
#check2 color: red; background-color: black \
#label1 color: blue; text-decoration: underline \
#label2:hover color: blue; text-decoration: underline");
QWidget w; w.setFixedSize(120,130);
QCheckBox check1("checkbox1",&w);
check1.setObjectName("check1");
check1.move(10,0);
QCheckBox check2("checkbox1",&w);
check2.setObjectName("check2");
check2.move(10,30);
QLabel label1("label1", &w);
label1.setObjectName("label1");
label1.move(10,60);
QLabel label2("label2", &w);
label2.setObjectName("label2");
label2.move(10,90);
w.show();
return app.exec();
qt 4.7.3-3;拱Linux; gnome 3 后备模式
【问题讨论】:
【参考方案1】:代替
// some comment
使用
/* some comment */
。我猜他们选择了后一种形式,因为它不受换行符的影响。
除此之外,如果还是不行,那么你似乎遇到了错误:https://bugreports.qt-project.org//browse/QTBUG-4307。
作为仅设置文本颜色的解决方法,请尝试
#check1:hover color:red; background-color:transparent;
这对我有用。
【讨论】:
评论只在问题中添加,它们在源代码中不存在 @TheHorse:应该在问题中提到;照原样,我的回答仍然适用【参考方案2】:对于第一个复选框,问题出在 Gtk+ 风格的某个地方:
QLabel
、QPushButton
或 QCheckBox
不支持 :hover
伪状态 css 选择器中的字体更改(包括 text-decoration
)。最简单的小部件似乎是QToolButton
(如果你真的需要,它可以用来替换 QLabels)。
所有小部件都支持该状态的调色板更改(前景和背景颜色和样式)。
【讨论】:
【参考方案3】:不应该
color: red
是
color: red;
?
您发布的代码中的一些地方缺少分号。
【讨论】:
最后一项后不需要分号。 ...或者它可能是必需的。 Qt 正在解析而不是某些浏览器。因此,诺基亚可以以他们有时间的任何方式实施它。我认为一般来说,假设其他人标准的每个模糊的便利功能都已实现是一个坏习惯。如果您查看其他一些 Qt 类,您总会发现一些未实现或以差异方式实现的东西。甚至浏览器也跟不上所有标准。 分号没有改变 @user440297:我不只是+建议+可能不需要分号。见htmlhelp.com/reference/css/structure.html。 Qt Doc 示例全部省略最后一个分号:qt-project.org/doc/qt-4.8/stylesheet-syntax.html【参考方案4】:我不能说你的复选框有什么问题,但是根据Qt的样式表参考可以找到以下花絮(我在网上找不到,但它在Qt助手中)
QLabel 支持盒子模型。不支持 :hover 伪状态。
也就是说,不支持 QLabel:hover。
【讨论】:
你是对的!这很奇怪,因为根据他们的文档,它不应该。但是,我确实从经验中知道,更改下划线不起作用,因为我过去曾尝试完全按照您在此处所做的操作。 Qt 4.7 支持悬停doc.qt.nokia.com/latest/stylesheet-syntax.html#pseudo-states 我不是说Qt不支持悬停伪状态,我说它不支持QLabels以上是关于Qt 样式表错误?的主要内容,如果未能解决你的问题,请参考以下文章