使用QSS将父QFrame悬停时如何设置子QLabel的颜色?

时间:2014-02-20 15:12:25

标签: qt stylesheet qtstylesheets

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

查看截图: enter image description here

我有QLabel的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;}

2 个答案:

答案 0 :(得分:0)

您无法使用QLabel执行此操作。这是QSS的局限性。尝试使用QToolButton代替QLabel(并自定义QToolButton看起来像QLabel)。

您可以使用QToolButton代替QFrame

答案 1 :(得分:0)

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

但是,通过此简单的QSS代码,我将标签的文本更改为蓝色,将鼠标悬停在标签上时显示红色。

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

使用对象名称时,此操作不起作用,可能是由于QSS的conflict resolution

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