我已经彻底阅读了文档并搜索了熟悉的域名,例如谷歌和stackoverflow已经有一段时间了。不幸的是,这一切都没有找到任何解决方案。所以我希望有人在这里可能是我的救世主......
我使用的是:PyQt4,Python 2.6,Windows 7
我正在尝试设置QLabel的样式(使用我在程序中导入的CSS文件)。 QLabel位于QListWidgetItem中。
所以我的结构如下:
QListWidget
+QListWidgetItem
+QLabel
因此,根据文档,访问QLabel的方式如下。这里没问题。
QListWidget::item QLabel
{
background-color:#000
}
但是,我希望QLabel样式只能在我悬停QListWidgetItem时更改。使用以下代码,伪状态由于某种原因而被忽略。因此背景颜色应用于QLabel,但它不符合伪状态。
QListWidget::item:hover QLabel
{
background-color:#000
}
当我单独运行我的应用程序时,这种情况仍然存在。
当QListWidgetItem悬停时,有没有办法改变QLabel的样式属性?如何实现?
此处的目标是仅通过css(或qss,如果您愿意)执行此操作,这是一个单独的文件,可以导入到程序中。
答案 0 :(得分:0)
至少在Qt 4.7中你不能做到这一点(没有测试过Qt5) 这里有很好的解释:How to set color of child QLabels while hover parent QFrame with QSS?
似乎Qt css不支持后代元素的伪状态,但原始CSS会: http://codepen.io/anon/pen/olwHs
你应该写一些代码来支持这种风格。使用Enter / LeaveEvent处理悬停,然后通过setStyleSheet()
您也可以使用动态属性将样式保留在.ui中
QLabel[hover="true"] {}
然后在代码中设置并重置此值
您也可以为主窗口小部件使用动态属性
[hover="true"] QLabel {}