我最近开始重写一个应用程序,我正在尝试将它移植到模型/视图以减少我在那里的 kludges 数量。
到目前为止,我能够成功地制作一个继承自QAbstractTableModel
. 这个模型是这样的:
class MyModel(QtCore.QAbstractTableModel):
def __init__(self, data, parent=None):
super(MyModel, self).__init__(parent)
self.data = data
data
是一个包含多个对象的列表。然后在 data() 方法中访问它们:
def data(self, index, role):
# much stuff omitted for clarity
return QtCore.QVariant(self.data[index.column()].id)
现在,如果我使用预定义的data
元素,这很好。但实际上以data
编程方式更改(当接收到某些信号时它会扩展)。我怎样才能让模型意识到这一点,以便我的视图也可以对这些变化做出反应?
我一直在阅读有关读写模型的文章,但它们也允许用户编辑和更改内容,而在我看来,我希望事情是不可编辑的:简而言之,需要“在幕后”更改模型只是,视图会适应这一点。
在这种情况下,最好的方法是什么?用 setData() 等实现读写模型,还是有更简单的解决方案?