【问题标题】:Qt Style Sheet Bugs (7 years later)Qt 样式表错误(7 年后)
【发布时间】:2018-09-16 18:54:20
【问题描述】:

您好,我是 Qt 新手,正在跟进这个关于样式错误的问题:Qt style sheets bugs?

我正在尝试设置按钮样式(使用 QTDesigner),以便在悬停时,文本具有下划线装饰。

此代码有效:

#printBtn:hover {
background-color: transparent;  
text-decoration: underline;
}

此代码不起作用:

#printBtn:hover {   
text-decoration: underline;
}

我是否遗漏了为什么文本装饰会被背景颜色混淆?据我所知,上面链接堆栈中的结论是 QPushButton 不支持字体更改。这仍然正确吗?似乎它确实支持它,但前提是您没有背景颜色。

谢谢!

【问题讨论】:

  • Qt style sheets bugs?的可能重复
  • @MrEricSir。你读过问题的第一行吗?
  • @MrEricSir :不,不是重复的——见第一句话。

标签: qt qt-designer qtstylesheets


【解决方案1】:

确实是Qt的bug,我用Qt 5.10.1也能得到同样的结果。

QPushButton 确实支持字体更改。以前不是这样,但它已被“修复”(参见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);

其实你也可以通过设置 text-align 来强制它工作:

#printBtn:hover {   
text-align: center;
text-decoration: underline;
}

恐怕我们只能在http://bugreports.qt.io 提交错误报告。

【讨论】:

  • 好的,感谢您的检查和快速修复!我注册并尽我所能报告了这个错误。
  • 谢谢,我也在那里发表了评论。希望我们能得到 Qt 开发者的支持。
猜你喜欢
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-28
  • 1970-01-01
相关资源
最近更新 更多