Python PyQt示例editabletreemodel.py在删除最后一行时崩溃

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

editabletreemodel.py示例(来自PyQt示例/项目视图文件夹)中,我注意到当最后一行被删除时(例如,读取“连接编辑模式”的一行或之后的任何一行),应用程序会崩溃

'索引器:列表索引超出范围'

这可能是因为示例在创建索引时保留TreeItem对象,等等,而不是ID?我也有类似的问题,只是想知道保留ID而不是对象是否更好?或者可以安全地检查是否请求超过限制的行,如下所示:

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]