如何检查 QTreeViews 项目是否在委托中展开或折叠?

How to check whether the QTreeViews item is expanded or collapsed in delegate?

在 PyQt5 中有什么方法可以找到树视图中的项目是否处于哪个状态?即,展开或折叠。我需要在我创建的自定义委托 class 中获取值。

class SummaryDelegate(QStyledItemDelegate):
       def __init__(self, treeView):
           super(SummaryDelegate, self).__init__()
           self.treeView = treeView
           self.headerItems = self.collectDictKeys(summarySectionData)
    
       def collectDictKeys(self, data):
           collection = []
           for key, value in data.items():
               collection.append(key)
               if isinstance(value, dict):
                   collection.extend(self.collectDictKeys(value))
    
           return collection
    
       def paint(self, painter, option, index):
           dataItem = index.data()
           
           if dataItem in self.headerItems:
                   pass
           else:
               if type(index.data()) == str:
                    pass
               else:
                    pass
    
               newRec = QRect(option.rect)
               newRec.setLeft(0)
               painter.fillRect(newRec, QColor(240, 245, 255))

paint 中,option.state 将为您提供项目的 state,包括它是否打开(即展开)。它还具有有关项目的其他状态参数的信息,例如它是否被选中。要查看该项目是否打开,您可以使用 int(option.state) & QtWidgets.QStyle.State_Open 之类的东西。同样,int(option.state) & QtWidgets.QStyle.State_Selected 会告诉您该项目是否被选中。