【发布时间】:2011-05-06 21:50:21
【问题描述】:
我最近开始重写一个应用程序,我正在尝试将其移植到模型/视图中,以减少我在那里遇到的问题。
到目前为止,我能够成功地创建一个继承自 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()等实现读写模型,还是有更简单的方案?
【问题讨论】:
标签: python pyqt model-view