我在Qt中有一个复合控件,它是一个带有QHBoxLayout的QWidget,包含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);
}
希望它会在父级的悬停状态下激活,但它什么都不做。
有没有办法在样式表中完全执行此操作?
如果没有,有没有办法在代码中将父悬停状态传播给它的子节点?
答案 0 :(得分:0)
可能有一个事件处理程序处理QEvent::HoverMove
或QEvent::HoverEnter
和QEvent::HoverLeave
,您可以在其中设置属性Qt::WA_Hover
到您的标签。
我没有尝试过,但它应该可以用作HoverEnter和HoverLeave,因为它会调用update()
函数。