我想分享一个解决方案,以解决我遇到的一个问题,即QStandardItem
模型以看似随机的时间间隔被清除。
错误的代码:
addr = []
while isinstance(item, QtGui.QStandardItem):
coordinates = (item.row(), item.column())
addr.insert(0, coordinates)
item = item.parent() # <--- this line is problem
gc.collect() # triggers item deletion
递归遍历项父项并将它们分配给变量会导致它们被标记为准备好进行垃圾回收。固定代码:
请改用 QModelIndex
es。
index = item.index()
addr = []
while index.isValid():
coordinates = (index.row(), index.column())
addr.insert(0, coordinates)
index = index.parent()
gc.collect() # nothing gets deleted now :)