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 提交错误报告外,恐怕我们无能为力。