【发布时间】:2015-02-19 21:58:22
【问题描述】:
我正在尝试显示一些带有 QTableView 子类和 QAbstractTableModel 子类的表格数据。我无法让数据显示出来,但在我真正开始研究之前,我想确保我按照预期的方式使用模型。
我的应用程序的数据层周期性地接收新数据,并通过调用slot之类的方式将数据分发到应用程序的其他部分
void new_data_received(QSharedPointer<Measurement> measurement)
Measurement 是我的数据类。这允许数据在不被复制的情况下传递(我的一些数据类非常大)。测量是不可变的;显示它们的表格视图不允许任何编辑。
Measurement 是QAbstractTableModel 的子类,因此每当我收到新的测量值时,我都会在QTableView 子类实例上调用set_model,并将新数据作为参数。 (在收到第一次测量之前的时间内,表格视图上没有设置模型。)
Qt 的视图类是否打算像这样使用,并且每隔一段时间就会设置一个新模型?或者应该只有一个模型类的实例,与表视图具有相同的生命周期,接收新数据并发出dataChanged?后者似乎增加了不必要的结构 - 至少在我的情况下 - 但也许这就是系统设计使用的方式。
【问题讨论】:
-
我认为带有 dataChanged 信号的模型是正确的方法。如果您使用非常大的数据集,则重置模型不是正确的方法。如果你能在上面工作,下一步,建立在它之上,你可能想探索代理模型,它建立在现有的大模型之上,但只加载要显示的数据。