【问题标题】:How to get QWidget background-color after set a QStyleSheet设置 QStyleSheet 后如何获取 QWidget 背景颜色
【发布时间】:2018-03-09 11:40:54
【问题描述】:

我有我的桌面 QApplication (Qt 5.9),我在其上使用样式表成功设置了样式。在运行时,每个 QWidget 看起来都按预期正确设置样式。
我需要知道的是特定样式小部件的背景颜色,比如说 QTooltip。

我尝试了 QWidget::palette 方法,但得到的结果看起来像是我询问的 QPalette::ColorRole 的系统默认颜色。
此外,qt docs 建议在使用样式表时不要使用此方法。

所以...更一般地说,如何查询通过样式表定义的小部件属性?

【问题讨论】:

  • Qt 根据您的 QSS 生成 QProxyStyle 的特殊实例。没有办法扭转它。

标签: c++ qt qtstylesheets qstylesheet qpalette


【解决方案1】:

您不能直接访问样式表的各个属性。您可以做的是检索样式表,然后您需要对其进行解析并找到您要查找的属性(some_widget->styleSheet() 会将其返回为QString)。

如果您不想这样做,并且想直接访问调色板,则必须使用它而不是样式表来更改颜色。

示例代码如何使用调色板而不是样式表来设置代码样式:

QPalette px;
px.setColor(QPalette::Text, QColor(255, 255, 255)); // Set text color to white
px.setColor(QPalette::Base, QColor(0, 0, 0)); // Set background to black
some_widget->setPalette(px);

【讨论】:

    猜你喜欢
    • 2012-09-21
    • 2020-01-06
    • 2019-06-21
    • 1970-01-01
    • 2023-03-25
    • 2010-12-11
    • 2011-11-11
    • 2020-04-21
    相关资源
    最近更新 更多