1

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

我的应用程序的数据层定期接收新数据并通过调用槽将数据分发到应用程序的其他部分,如

void new_data_received(QSharedPointer<Measurement> measurement)

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

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

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

4

1 回答 1

0

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

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

于 2015-02-20T08:44:12.600 回答