我遇到了一个实现__getitem__
和__setitem__
的类的问题。
此类的实例是QAbstractListModel
的数据后端。我在data(index)
的{{1}}实现中返回这些实例,以便能够从模型外部访问对象。
我想要执行此操作的一种情况是,当用户点击使用我的模型显示数据的role==Qt.UserRole
中的任何项目时。现在的问题是,一旦我尝试从用户点击的索引中检索数据,我的程序就会在无限循环(QListView
内)中开始运行。
下面是一个完整的,可复制/可粘贴的代码片段,可以重现所描述的行为。该程序将循环到__getattr__
的行index.data(Qt.UserRole)
。
我在某个地方错过了一点还是在PySide中遇到过错误?
testfunc
答案 0 :(得分:0)
似乎PySide正试图迭代你的对象(不能说为什么)。正如在评论中所说,你需要在__getitem__
中引发IndexError以在PySide中停止此迭代。
关于__getitem__
的信息和对象的迭代:https://stackoverflow.com/a/926645/812662
答案 1 :(得分:0)
__getitem__
需要在无效密钥
IndexError()