从QModelIndex检索数据会导致无限循环

时间:2011-12-25 15:48:12

标签: python qt pyside qmodelindex

我遇到了一个实现__getitem____setitem__的类的问题。

此类的实例是QAbstractListModel的数据后端。我在data(index)的{​​{1}}实现中返回这些实例,以便能够从模型外部访问对象。

我想要执行此操作的一种情况是,当用户点击使用我的模型显示数据的role==Qt.UserRole中的任何项目时。现在的问题是,一旦我尝试从用户点击的索引中检索数据,我的程序就会在无限循环(QListView内)中开始运行。

下面是一个完整的,可复制/可粘贴的代码片段,可以重现所描述的行为。该程序将循环到__getattr__的行index.data(Qt.UserRole)

我在某个地方错过了一点还是在PySide中遇到过错误?

testfunc

2 个答案:

答案 0 :(得分:0)

似乎PySide正试图迭代你的对象(不能说为什么)。正如在评论中所说,你需要在__getitem__中引发IndexError以在PySide中停止此迭代。

关于__getitem__的信息和对象的迭代:https://stackoverflow.com/a/926645/812662

答案 1 :(得分:0)

__getitem__需要在无效密钥

上提出IndexError()