我有一些新手问题。我不确定我是否正确理解了模型 - 视图 - 控制器设计模式。
也许我会从描述我的问题开始。我正在从文件中读取一些数据。这可以说10秒钟,之后我会在表格中显示这些数据。问题是我应该如何存储这些数据?除了QStandardItemModel
我应该有另一个容器,我将从文件中读取数据并在其他线程中使用它?例如,我在Gui线程中有QStandardItemModel
,我创建了另一个容器,让我们说QVector
。我将数据从文件加载到QVector
,然后将数据从QVector
移到QStandardItemModel
?
我无法在其他线程中使用QStandardItemModel
并直接从文件中读取数据到QStandardItemModel
,因为我知道GUI会冻结,因为QStandardItemModel
会在appendRow
之后发出更新视图的信号}。
或者我可能应该创建自定义模型并添加方法以仅在整个文件加载到QStandardItemModel
时更新视图? QTableView
有自己的数据容器,它与模型不同步?有可能/正确的方式吗?
我读新文件时的情况如何?
感谢您的帮助。
答案 0 :(得分:0)
我认为您可以采取以下措施来解决问题:
QTableView
中为nullptr
设置模型。QStandardItemModel
(此模型是您的QTableView
的模型)非主(非GUI)线程。QTableView
的数据设置模型。当然,解决问题的最简单方法也可能是向用户显示如下内容:“数据加载,请稍候......”,同时在主要(GUI)QStandardItemModel
中加载数据线程。