Qt的模型 - 视图系统是否适用于一个模型或多个模型?

时间:2015-02-19 21:58:23

标签: c++ qt qt5.2

我正在尝试使用QTableView子类和QAbstractTableModel子类显示一些表格数据。我无法显示数据,但在我开始真正重复之前,我想确保我按照预期的方式使用模型。

我的应用程序的数据层定期接收新数据,并通过调用

等插槽将数据分发到应用程序的其他部分
void new_data_received(QSharedPointer<Measurement> measurement)

其中Measurement是我的数据类。这允许数据在不被复制的情况下传递(我的一些数据类非常大)。测量是不可改变的;显示它们的表格视图不允许任何编辑。

MeasurementQAbstractTableModel的子类,因此每当我收到新的测量值时,我会在set_model子类实例上调用QTableView,并将新数据作为参数。 (在收到第一次测量之前的时间内,表视图上没有设置模型。)

Qt的视图类是否打算像这样使用,每隔一段时间就会设置一个新模型?或者应该只有一个模型类的实例,其生命周期与表视图相同,它接收新数据并发出dataChanged?后者似乎增加了不必要的结构 - 至少在我的情况下 - 但也许这就是系统设计使用的方式。

1 个答案:

答案 0 :(得分:0)

我不认为您的Measurement类应该是QAbstractTableModel的子类。它应该代表原始数据。因此,带有一些参数或结构列表的结构可能是数据类的正确类型。 然后,您应该实现添加传入数据的自定义模型。因此,当新数据到达时,该模型将自动更新连接到它的所有视图。在这种情况下,新数据仅直接影响您的模型,而不影响视图。

我想每次重置视图的模型都不是你想要的正确方法。