在Qt中为整个小部件设置样式表

3
我有一个自定义小部件,它继承自QWidget并在其布局中包含一些标签。我想在每次将鼠标悬停在小部件上时更改小部件和小部件内的标签(即全部内容)的背景颜色。
当在我的自定义小部件中使用“*:hover { background: red; }”时,只有在鼠标移动到标签上方时才会使标签变红,而在标签之外、标签之间等位置则不会。考虑到我将样式表放在父窗口小部件中,我不理解这种行为。
有什么想法吗?非常感谢。
2个回答

4

非常感谢。但是,在这种情况下,我该如何处理鼠标悬停?我的意思是,我试图使用 QWidget:hover { background: foo; },我可以使用 *:hover { background: foo; } 吗? - Didac Perez Parera
适用于所有小部件,但不适用于父级!我完全惊讶! - Didac Perez Parera
@DídacPérez,你的自定义小部件继承自哪个QWidget?我相信有些小部件没有悬停事件(例如:QGroupBox)。你也不需要使用“*:hover”。你需要做的是重写enterEvent()和leaveEvent()。在enterEvent()中,你设置setStyleSheet("* {background: red}"),而在leaveEvent()中,你设置setStyleSheet("")来重置它。 - fxam
好的,问题已经解决了,使用QFrame容纳所有小部件。 - Didac Perez Parera

1
最终,我通过在主QWidget内创建一个QFrame并设置该QFrame的StyleSheet来解决了这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接