C++ 为什么Qt样式表是;Foo:hover*{“始终适用”吗?

C++ 为什么Qt样式表是;Foo:hover*{“始终适用”吗?,c++,c,qt,stylesheet,C++,C,Qt,Stylesheet,我有一个项目列表,我想对当前选择的项目进行着色。问题是Foo小部件有子项,并且当以下规则始终适用而不是仅悬停时: Foo:hover { background-color:#00FFFF; } Foo:hover * { background-color:#00FFFF; } 如何修复此问题?您的错误。应该是这样的: Foo *::hover{ background-color: #00FFFF; } 或者,如果您只想将此应用于直接子对象: Foo > *::hover{

我有一个项目列表,我想对当前选择的项目进行着色。问题是
Foo
小部件有子项,并且当以下规则始终适用而不是仅悬停时:

Foo:hover {
    background-color:#00FFFF;
}
Foo:hover * {
    background-color:#00FFFF;
}
如何修复此问题?

您的错误。应该是这样的:

Foo *::hover{ background-color: #00FFFF; }
或者,如果您只想将此应用于直接子对象:

Foo > *::hover{ background-color: #00FFFF; }

你确定不应该是
Foo::hover
?@koan我希望Foo和所有的子项都处于悬停状态,但是
:fover*
规则是始终匹配的部分(即使它没有悬停)。在我的样式表中,我使用的是
QPushButton::hover
-请注意,这是2个冒号。如果未识别
:hover
,则始终可以识别它match@koan只是尝试了一下,没有什么不同。背景颜色在你的代码中是一样的。是故意的吗?这个解决方案会让孩子们在ey本身处于悬停状态。当Foo处于悬停状态时,我希望它们的背景发生变化。(我测试了这个以验证我的正确性。)@chacham15在这种情况下,您可能必须覆盖enter和leave事件,并在那里更改样式表。