【问题标题】:Qt Stylesheet for QMessageBoxQMessageBox 的 Qt 样式表
【发布时间】:2011-02-24 11:51:54
【问题描述】:

我正在使用样式表。我想为主要消息文本和 QMessageBox 的信息文本设置样式信息。是否可以访问这些子控件?

【问题讨论】:

    标签: qt qt4 stylesheet


    【解决方案1】:

    是的,这是可能的。诀窍是知道如何选择子控件。以下是更改文本样式的方法,在此示例中,我将对话框设置为灰色,将文本设置为灰白色:

    QMessageBox {
        background-color: #333333;
    }
    
    QMessageBox QLabel {
        color: #aaa;
    }
    

    第二个子句使用Descendant Selector,在这种情况下,它的意思是“任何 QLabel,它是 QMessageBox 的后代,包括子孙等”。你可以更具体,只选择QMessageBox > QLabel的孩子

    我在这里找到了这个信息http://qt-project.org/doc/qt-4.8/stylesheet-syntax.html

    【讨论】:

      【解决方案2】:

      只使用富文本 - 详细文本除外,因为它总是被解释为纯文本。

      查看文档here

      【讨论】:

      • 这就是我使用样式表的原因;我试图避免每次使用此小部件时都必须设置样式信息。
      【解决方案3】:

      您可以简单地在样式表中执行 QMessageBox {font:...} 或使用 setStyleSheet(...)

      除非您尝试将主要消息文本的样式与信息文本分开设置...这是您想要做的吗?

      【讨论】:

      • 是的,我正在尝试将主要消息文本的样式与信息文本分开设置。
      • 在这种情况下,我建议您看看这个网站:doc.qt.nokia.com/latest/qitemdelegate.html#
      • 由于 QMessageBox 与模型/视图无关,那么这将如何相关?也许您可以建议一种使用它的方法;我不明白怎么做。
      • 当我参考那个网站时,我很难记住我要去哪里,但我几乎可以肯定它是有道理的。如果一切都失败了,是否有可能制作自定义 QMessageBox ?这样,您实际上可以通过覆盖绘制方法来控制正在绘制的内容的细节。抱歉,我无法提供真正的示例代码和更具体的建议(我很忙,而且我的思绪已经太多了)。
      • 我可以制作一个自定义样式的消息框克隆,但这违背了使用标准小部件和样式表的意义......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-02
      • 2017-05-28
      • 1970-01-01
      • 2012-09-02
      相关资源
      最近更新 更多