在读取整个文件到QStandardItemModel后更新QTableView

Updating QTableView after reading whole file to QStandardItemModel

本文关键字:QStandardItemModel 更新 QTableView 文件 读取      更新时间:2023-10-16

我有一些新手问题。我不确定我是否正确理解了模型-视图-控制器设计模式。

也许我应该从描述我的问题开始。我正在从文件中读取一些数据。这可能需要10秒,然后我将这些数据显示在表格中。问题是我应该如何存储这些数据?除了QStandardItemModel,我应该有另一个容器,我将从文件中读取数据,并在其他线程中使用它?例如,我有QStandardItemModel在Gui线程,我创建另一个容器,让我们说QVector。我将数据从文件加载到QVector,然后将数据从QVector移动到QStandardItemModel ?

我不能在其他线程中使用QStandardItemModel并直接从文件读取数据到QStandardItemModel,因为GUI冻结,因为QStandardItemModelappendRow之后发出信号来更新视图。

或者我应该创建自定义模型,并添加方法来更新视图只有当整个文件加载到QStandardItemModel ?QTableView有自己的数据容器,它不与模型同步?这样可能/正确吗?

当我读取一个新文件的情况是什么?

谢谢你的帮助

我认为你可以按照以下步骤来解决你的问题:

  1. 当您需要从文件中加载新数据时,请在nullptr中设置QTableView的模型。
  2. 用文件中的数据在非主(非gui)线程中填充QStandardItemModel(此模型是QTableView的模型)。
  3. 在主(GUI)线程中设置QTableView的数据模型。

当然,解决问题的最简单方法也可能是向用户显示这样的东西:"数据加载,请等待…",当你在主(GUI)线程中加载QStandardItemModel中的数据时。

相关文章:
  • 没有找到相关文章