我在Qt中有一个复合控件,它是一个QWidget,其中QHBoxLayout包含3个子控件(QWidget> QHBoxLayout> 3 QLabels)。在那些仅显示一个图标的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);
}

希望它会在父级的悬停状态下激活,但不会执行任何操作。

有没有一种方法可以完全在样式表中做到这一点?

如果没有,是否有办法在代码中将父悬停状态传播给它的 child ?

最佳答案

也许有一个处理QEvent::HoverMoveQEvent::HoverEnterQEvent::HoverLeave的事件处理程序,您可以在其中将Qt::WA_Hover属性设置为标签。

我没有尝试过,但是它应该可以作为HoverEnter和HoverLeave来调用update()函数。

10-05 20:55
查看更多