【问题标题】:How to set color of child QLabels while hover parent QFrame with QSS?如何在使用 QSS 悬停父 QFrame 时设置子 QLabels 的颜色?
【发布时间】:2014-03-21 15:11:30
【问题描述】:

我正在尝试使用样式表在 QFrame 内设置 2 个标签的悬停状态颜色,但无论是否存在实际悬停,框架都会采用悬停状态:

看截图:

我有一个带有 QLabels 的 QFrame。我将默认颜色设置为绿色和紫色。当我悬停 QFrame 时,两个标签的颜色都应该变成红色。

exact same CSS does work with html,但我似乎无法让它与 QT 样式表一起使用。

div{background-color:black; width:200px; height:100px;}

#label1{color: green;}
#label2{color: purple;}

div:hover #label1 {color: red;}
div:hover #label2 {color:red;}

【问题讨论】:

  • QLabels 是 QFrames。也许这就是你的 CSS 不能正常工作的原因?此外,您缺少分号。我已经看到了导致问题的原因。

标签: qt stylesheet qtstylesheets


【解决方案1】:

使用 Qt5.9 测试,您的代码仍然无法正常工作。我的行为和你一样。

但是,通过这个简单的 QSS 代码,我将标签的文本变为蓝色,悬停时变为红色。

QLabel {color:blue}
QFrame:hover {color:red}

这在使用对象名时不起作用,可能是因为 QSS 的 conflict resolution

#label {color:blue}
QFrame:hover {color:red}

【讨论】:

    【解决方案2】:

    QLabel 无法做到这一点。这是QSS的限制。尝试使用QToolButton 而不是QLabel(并自定义QToolButton 看起来像QLabel)。

    您可能也应该使用QToolButton 而不是QFrame

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-11
      • 2020-02-14
      • 2013-01-25
      • 2017-07-03
      • 1970-01-01
      • 2022-10-08
      相关资源
      最近更新 更多