python - Pyside2 5.12 AttributeError:“shiboken2.libshiboken.VoidPtr”对象没有属性“typeInfo”TreeView
问题描述
我最近从 PySide2 5.11.2 升级到 PySide2 5.12。我的 TreeView 模型在升级之前一直在工作,但现在失败并出现错误,“AttributeError: 'shiboken2.libshiboken.VoidPtr' 对象没有属性 'typeInfo'”
typeIfo 存在于节点的类中,但不知何故在 pyside2 5.12 中未识别
这是我的代码:
class ABModel(QtCore.QAbstractItemModel):
def __init__(self, root, parent=None):
super(ABModel, self).__init__(parent)
self._rootNode = root
def rowCount(self, parent):
if not parent.isValid():
parentNode = self._rootNode
else:
parentNode = parent.internalPointer()
return parentNode.childCount()
def columnCount(self, parent):
return 8
def data(self, index, role):
if not index.isValid():
return None
node = index.internalPointer()
typeInfo = node.typeInfo()
if role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole:
if index.column() == 0:
return node.name()
if index.column() == 1:
return typeInfo
def headerData(self, section, orientation, role):
if role == QtCore.Qt.DisplayRole:
if section == 0:
return "TASKS"
else:
return "DATE"
def flags(self, index):
return QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable
def parent(self, index):
node = self.getNode(index)
parentNode = node.parent()
if parentNode == self._rootNode:
return QtCore.QModelIndex()
return self.createIndex(parentNode.row(), 0, parentNode)
def index(self, row, column, parent):
parentNode = self.getNode(parent)
childItem = parentNode.child(row)
if childItem:
return self.createIndex(row, column, childItem)
else:
return QtCore.QModelIndex()
def getNode(self, index):
if index.isValid():
node = index.internalPointer()
if node:
return node
return self._rootNode
class Node(QtCore.QObject):
def __init__(self, name, parent=None):
super(Node, self).__init__()
self._name = name
self._children = []
self._parent = parent
if parent is not None:
parent.addChild(self)
def typeInfo(self):
return "NODE"
def addChild(self, child):
self._children.append(child)
def insertChild(self, position, child):
if position < 0 or position > len(self._children):
return False
self._children.insert(position, child)
child._parent = self
return True
def setName(self, name):
self._name = name
def child(self, row):
return self._children[row]
def childCount(self):
return len(self._children)
def parent(self):
return self._parent
def row(self):
if self._parent is not None:
return self._parent._children.index(self)
解决方案
推荐阅读
- php - 以毫秒为单位将时间设置为中欧时间 (CET)
- sql-server - SQL Server 2012 以主键自动增量跳转
- php - 导入 phpMyAdmin 导出后插入不起作用
- javascript - 使用 material-ui 的 TextField 和 getInputProps 在输入旁边创建标签
- java - 可以通过javassist将参数添加到现有类的现有方法中吗
- sql - 两个表在其他表中获取具有共同值或没有值的值
- python - 使用 brew 降级到 python 3.6.5:错误 /bin/sh: sphinx-build: command not found make: *** [build] Error 127
- python - 如何从查询的数据中形成一个列表?
- bash - 在 bash 中对复杂的 git 版本进行排序以进行生产更新算法
- datetime - 没有时区的 Avro 源连接器中的时间戳字段