我正在尝试使用QTableView
子类和QAbstractTableModel
子类显示一些表格数据。我无法显示数据,但在我开始真正重复之前,我想确保我按照预期的方式使用模型。
我的应用程序的数据层定期接收新数据,并通过调用
等插槽将数据分发到应用程序的其他部分void new_data_received(QSharedPointer<Measurement> measurement)
其中Measurement
是我的数据类。这允许数据在不被复制的情况下传递(我的一些数据类非常大)。测量是不可改变的;显示它们的表格视图不允许任何编辑。
Measurement
是QAbstractTableModel
的子类,因此每当我收到新的测量值时,我会在set_model
子类实例上调用QTableView
,并将新数据作为参数。 (在收到第一次测量之前的时间内,表视图上没有设置模型。)
Qt的视图类是否打算像这样使用,每隔一段时间就会设置一个新模型?或者应该只有一个模型类的实例,其生命周期与表视图相同,它接收新数据并发出dataChanged
?后者似乎增加了不必要的结构 - 至少在我的情况下 - 但也许这就是系统设计使用的方式。
答案 0 :(得分:0)
我不认为您的Measurement
类应该是QAbstractTableModel
的子类。它应该代表原始数据。因此,带有一些参数或结构列表的结构可能是数据类的正确类型。
然后,您应该实现添加传入数据的自定义模型。因此,当新数据到达时,该模型将自动更新连接到它的所有视图。在这种情况下,新数据仅直接影响您的模型,而不影响视图。
我想每次重置视图的模型都不是你想要的正确方法。