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

时间:2012-09-13 14:52:26

标签: c++ qt stylesheet qtstylesheets

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

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

有没有办法在样式表中完全执行此操作?

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

1 个答案:

答案 0 :(得分:0)

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

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