我试图追踪编辑QTableView
单元格时遇到的错误。每次编辑元素时,我都会得到以下内容:
RuntimeError: maximum recursion depth exceeded
RuntimeError: maximum recursion depth exceeded
RuntimeError: maximum recursion depth exceeded
RuntimeError: maximum recursion depth exceeded
RuntimeError: maximum recursion depth exceeded
RuntimeError: maximum recursion depth exceeded
RuntimeError: maximum recursion depth exceeded
每次恰好7次。它仍然有效,但如果我继续编辑它最终锁定,我不能再编辑任何东西(因为这个错误堆积起来)。
我假设这是在我的setData()函数上,因为它在我完成编辑单元格时是正确的。
def setData(self, index, value, role = Qt.EditRole):
if role == Qt.EditRole:
row = index.row()
column = index.column()
item = value
self.__shots[row][column] = item
self.dataChanged.emit(index,index)
return True
return False
在我的研究中,我只发现了关于QModelIndex()(here)的信息:
在子类中重新实现此函数时,请小心避免 调用QModelIndex成员函数,例如QModelIndex :: parent(), 因为属于你的模型的索引只会调用你的 实现,导致无限递归。
我知道我在setData()中使用了索引,但不确定这是否相关或如何修复它。我是模范视图的新手,并且主要从Yasin Uludag's blog学习。
答案 0 :(得分:0)
你会在评论中发现@TimHoffmann问我是否有另一个dataChanged()
实例,结果我在data()
内使用它,导致递归问题。