我在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::HoverMove
或QEvent::HoverEnter
和QEvent::HoverLeave
的事件处理程序,您可以在其中将Qt::WA_Hover
属性设置为标签。
我没有尝试过,但是它应该可以作为HoverEnter和HoverLeave来调用update()
函数。