一、场景
- 有一个
QListWidget
的列表; - 里面存放了若干
QListWidgetItem
; - 每个
QListWidgetItem
与一个自定义类对象绑定——通过QListWidget
的setItemWidget()
实现。 - 自定义对象继承于
QWidget
,且内含QPushButton
。
二、bug描述
在该QListWidget
的外层有一个父组件,假设类型为TopWidget
,
下面的选择器无法选中到与QListWidgetItem
绑定的自定义对象中的QPushButton
,即使再精确地用上ID选择器也不会生效,或者会产生非常奇怪的结果。
TopWidget QpushButton{}
三、修正做法
直接使用自定义对象来限定,假设自定义对象类型为CustomWidget
CustomWidget QPushButton{
}
四、原因推测
判断为QListWidget
中是通过set注入的方式来与自定义对象建立联系的,
可能不存在正常的父子关系,导致QSS不能按预期工作。
使用自定义对象本身直接限定能够避免。