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