为啥 Qt 样式表 "Foo:hover * " 总是适用?

Posted

技术标签:

【中文标题】为啥 Qt 样式表 "Foo:hover * " 总是适用?【英文标题】:Why does the Qt Stylesheet "Foo:hover * " always apply?为什么 Qt 样式表 "Foo:hover * " 总是适用? 【发布时间】:2013-12-08 23:34:17 【问题描述】:

我有一个项目列表,我想为当前选定的项目添加阴影。问题是 Foo 小部件有子小部件,并且当以下规则始终适用而不是仅在悬停时:

Foo:hover 
    background-color:#00FFFF;

Foo:hover * 
    background-color:#00FFFF;

我该如何解决这个问题?

【问题讨论】:

你确定不应该是Foo::hover 吗? @koan 我希望 foo 和所有孩子都悬停,但 :fover * 规则是始终匹配的部分(即使它没有悬停)。 在我的样式表中,我使用的是QPushButton::hover - 注意是2个冒号。如果:hover 未被识别,那么它总是可以匹配 @koan 刚试了一下,没用 你截取的代码中的背景颜色是一样的。是故意的吗?? 【参考方案1】:

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

Foo *::hover background-color: #00FFFF; 

或者,如果您只想将其应用于直接子代:

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

【讨论】:

这个解决方案将使孩子们在他们自己悬停时具有该颜色背景。当 Foo 悬停在上面时,我希望他们的背景发生变化。 (我对此进行了测试以验证我是正确的。) @chacham15 在这种情况下,您可能必须覆盖进入和离开事件并在那里更改样式表。

以上是关于为啥 Qt 样式表 "Foo:hover * " 总是适用?的主要内容,如果未能解决你的问题,请参考以下文章

qt为啥raise没有效果

QT自定义精美换肤界面

为啥在Qt中用qss对同类的控件有不同的效果

html 能加载上的css 为啥JSP不能加载上?(是两个css样式表前一个不能加载,后面一个能)

css样式导入却无法显示样式为啥?

为啥 QLineEdit Style 在聚焦时不改变?