Qt Style Sheet 错误(7 年后)
Qt Style Sheet Bugs (7 years later)
您好,我是 Qt 的新手,正在跟进有关样式错误的问题:Qt style sheets bugs?
我正在尝试设置按钮样式(使用 QTDesigner),以便在悬停时文本具有下划线装饰。
此代码有效:
#printBtn:hover {
background-color: transparent;
text-decoration: underline;
}
此代码无效:
#printBtn:hover {
text-decoration: underline;
}
我是否遗漏了一些关于为什么文本装饰会被背景颜色混淆的信息?据我所知,上面链接堆栈的结论是 QPushButton 不支持字体更改。那仍然是正确的吗?看起来它确实支持它,但前提是你没有背景颜色。
谢谢!
确实是Qt的bug,我用Qt 5.10.1也能得到同样的结果。
QPushButton 支持字体更改。以前不是这样,但现在是 "fixed"(参见 this commit)。
我猜问题出在文件 qtbase/src/widgets/styles/qstylesheetstyle.cpp:
的第 3484 行
if (rule.hasPosition() && rule.position()->textAlignment != 0) {
因为此 if 子句的 else 部分(第 3556 行)将调用:
ParentStyle::drawControl(ce, &butOpt, p, w);
事实上,您也可以通过设置文本对齐来强制它工作:
#printBtn:hover {
text-align: center;
text-decoration: underline;
}
除了在 http://bugreports.qt.io 提交错误报告外,恐怕我们无能为力。
您好,我是 Qt 的新手,正在跟进有关样式错误的问题:Qt style sheets bugs?
我正在尝试设置按钮样式(使用 QTDesigner),以便在悬停时文本具有下划线装饰。
此代码有效:
#printBtn:hover {
background-color: transparent;
text-decoration: underline;
}
此代码无效:
#printBtn:hover {
text-decoration: underline;
}
我是否遗漏了一些关于为什么文本装饰会被背景颜色混淆的信息?据我所知,上面链接堆栈的结论是 QPushButton 不支持字体更改。那仍然是正确的吗?看起来它确实支持它,但前提是你没有背景颜色。
谢谢!
确实是Qt的bug,我用Qt 5.10.1也能得到同样的结果。
QPushButton 支持字体更改。以前不是这样,但现在是 "fixed"(参见 this commit)。
我猜问题出在文件 qtbase/src/widgets/styles/qstylesheetstyle.cpp:
的第 3484 行if (rule.hasPosition() && rule.position()->textAlignment != 0) {
因为此 if 子句的 else 部分(第 3556 行)将调用:
ParentStyle::drawControl(ce, &butOpt, p, w);
事实上,您也可以通过设置文本对齐来强制它工作:
#printBtn:hover {
text-align: center;
text-decoration: underline;
}
除了在 http://bugreports.qt.io 提交错误报告外,恐怕我们无能为力。