在Qt中更改父QWidget的悬停状态样式

3

我在Qt中有一个复合控件,它是一个包含3个子控件(QWidget > QHBoxLayout > 3 QLabels)的QWidget。其中一个控件只是一个显示图标的QLabel,当光标悬停在整个控件上时,我想要更改它的图标。当实际悬停在该图标上时,我可以使它起作用。

QLabel#stateIcon {
    image: url(:/icons/stateNormal);
}

QLabel#stateIcon:hover {
    image: url(:/icons/stateHover);
}

然而,我希望当鼠标在整个控件上 任何位置时都能显示悬停图标。

我尝试了类似以下的方法:

QLabel#stateIcon::parent:hover {
    image: url(:/icons/stateHover);
}

甚至连

也是


QLabel#stateIcon::parent::parent:hover {
    image: url(:/icons/stateHover);
}

希望它能在父元素的hover状态下激活,但实际上什么也没有发生。 是否有纯样式表的解决方法? 如果没有,是否有一种方式可以通过代码将父级hover状态传递给其子元素?
1个回答

0
也许可以使用事件处理程序来处理 QEvent::HoverMoveQEvent::HoverEnterQEvent::HoverLeave,在那里您可以将属性 Qt::WA_Hover 设置为您的标签。
我没有尝试过,但应该可以工作,因为 HoverEnter 和 HoverLeave 会导致调用 update() 函数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接