Python PyQt示例editabletreemodel.py在删除最后一行时崩溃
在editabletreemodel.py示例(来自PyQt示例/项目视图文件夹)中,我注意到当最后一行被删除时(例如,读取“连接编辑模式”的一行或之后的任何一行),应用程序会崩溃 '索引器:列表索引超出范围' 这可能是因为示例在创建索引时保留TreeItem对象,等等,而不是ID?我也有类似的问题,只是想知道保留ID而不是对象是否更好?或者可以安全地检查是否请求超过限制的行,如下所示:Python PyQt示例editabletreemodel.py在删除最后一行时崩溃,python,pyqt,qtreeview,qabstractitemmodel,Python,Pyqt,Qtreeview,Qabstractitemmodel,在editabletreemodel.py示例(来自PyQt示例/项目视图文件夹)中,我注意到当最后一行被删除时(例如,读取“连接编辑模式”的一行或之后的任何一行),应用程序会崩溃 '索引器:列表索引超出范围' 这可能是因为示例在创建索引时保留TreeItem对象,等等,而不是ID?我也有类似的问题,只是想知道保留ID而不是对象是否更好?或者可以安全地检查是否请求超过限制的行,如下所示: def child(self, row): if row >= self.childCount
def child(self, row):
if row >= self.childCount():
return None
return self.childItems[row]
我使用Python版本2.7.9和PyQt版本“4.9.6”
提前感谢。这应该作为错误报告在上 原始和声明
childItems
为:
QList<TreeItem*> childItems;
这不会执行任何显式边界检查,因为如果number
超出边界,则value()
只会返回null。但显然python列表的行为方式不同,因此需要进行显式边界检查:
def child(self, row):
if 0 <= row < self.childCount():
return self.childItems[row]
def子项(自身,行):
如果0
def child(self, row):
if 0 <= row < self.childCount():
return self.childItems[row]