【发布时间】:2015-08-25 23:52:58
【问题描述】:
我有一些由我自己的类表示的数据;修正我举个例子的想法。
class MyOwnModel():
def __init__(self, name="", number=0):
self.name = name
self.number = number
然后我有一个此类实例的列表,我想在 QTableView 中表示。
li = [MyOwnModel("a", 1), MyOwnModel("b", 2)]
然后我看到了两种策略来制作QTableView:
- 更改
MyOwnModel使其子类化QAbstractTableModel - 构建一个新的
QAbstractTableModel,它模仿MyOwnModel,其属性例如是两个QString,并将dataChanged信号连接到一个更新MyOwnModel实例的函数
我对这些都不完全满意,但我暂时没有其他想法。
哪一个最适合我的问题? (在实践中我有一个更复杂的类,但我想使用相同的框架)
【问题讨论】:
-
MyOwnModel类显然不是任何类型的模型。它只是一个包含一项数据的简单命名空间。因此,您的任何一种策略都不可能奏效。抽象模型包装底层数据(在您的情况下只是一个列表),并提供用于访问项目的标准接口。请参阅 Qt 文档中的 Model Subclassing Reference。或者只使用QStandardItemModel。
标签: model-view-controller pyqt qtableview qabstracttablemodel