3

我在 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);
}

希望它会在父级的悬停状态下激活,但它什么也不做。

有没有办法纯粹在样式表中做到这一点?

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

4

1 回答 1

0

也许使用处理QEvent::HoverMoveor的事件处理程序QEvent::HoverEnterQEvent::HoverLeave您可以在其中将属性设置Qt::WA_Hover为标签。

我没有尝试过,但它应该可以工作,因为 HoverEnter 和 HoverLeave 会导致update()函数被调用。

于 2012-09-13T16:42:25.480 回答