记QListWidget中QPushButton QSS样式失效的“bug”

一、场景

  1. 有一个QListWidget的列表;
  2. 里面存放了若干QListWidgetItem
  3. 每个QListWidgetItem与一个自定义类对象绑定——通过QListWidgetsetItemWidget()实现。
  4. 自定义对象继承于QWidget,且内含QPushButton

二、bug描述

在该QListWidget的外层有一个父组件,假设类型为TopWidget
下面的选择器无法选中到与QListWidgetItem绑定的自定义对象中的QPushButton,即使再精确地用上ID选择器也不会生效,或者会产生非常奇怪的结果。

TopWidget QpushButton{

}

三、修正做法

直接使用自定义对象来限定,假设自定义对象类型为CustomWidget

CustomWidget QPushButton{
}

四、原因推测

判断为QListWidget中是通过set注入的方式来与自定义对象建立联系的,
可能不存在正常的父子关系,导致QSS不能按预期工作。

使用自定义对象本身直接限定能够避免。

你可能感兴趣的:(qt,c++,bug)