Qt模型在单独的线程中查看数据和模型
Qt Model-View data and model in separate thread
以前,我问过在不同线程中运行模型和视图的问题,现在,我明白了它是如何带来问题的。为了避免这个问题,我想到了重复数据。当工作线程修改数据时,它会同时向GUI/Model线程发送更新,以使用相同的数据更新模型(因此GUI/Model中存在数据的精确副本)。
这听起来像是一种合理的方法吗?另一种方法是使用具有默认模型的直接小部件,如QTableWidget等,但我需要做很多默认情况下由QTableView支持的事情。
请建议!
链接到其他问题:设计模式、Qt模型/视图和多线程
有两种情况是可能的,但在任何一种情况下,您都需要至少两个对象,如下所示:
数据对象
包含维护和操作数据所需的所有函数。数据存储在指向描述数据的对象的指针中。数据结构,我将留给你。
型号
包含指向当前正在显示的数据的指针矢量
场景1
QTableView
中的数据仅在QTimer
信号或不同信号的情况下显示,数据存储器被锁定,显示模型的矢量被剪切并放入模型中,并且reset()
被调用以使QTableView
用新数据重新绘制。
场景2
您可以在QTableView
中通过自定义ItemEditor
操作数据。在这种情况下,具有QTableView
的顶部小部件应该具有对数据对象和QTableView
的引用,以及在编辑完成时ItemEditor
发出的信号的信号处理程序。然后,这个信号处理程序将锁定数据对象内的数据结构并更新它,一旦完成,它可能会剪切一个新的矢量来显示,但通常情况下,它不必这样做
如何设置锁定、搜索等完全取决于您。
相关文章:
- 如何在不使用委托的 QML 中显示模型数据
- 将C++数据模型与Qt SCXML状态机一起使用
- 在QT C++编辑Qtable模型数据时,我需要得到一个小盒子,我需要显示编辑文本,这怎么可能?
- 将自定义 Java 数据模型传递给我的本机代码
- 不可变数据模型的内存管理
- 是否可以将同一组源数据与不同的表模型链接起来?
- 两个QTableViews,两个模型和相同的数据
- 如何访问Assimp模型数据以进行碰撞
- 将 json 解析为数据模型 [是:C++头文件设计]
- 从高度动态的C 数据模型中更新QML:计时器与属性绑定
- Qt中数据类(模型)和视图/控制器类之间的数据通信的正确方式是什么
- 如何在不注册对象的情况下访问标准项模型的数据?
- Linux数据模型和基元类型大小
- 使用自定义QHeaderView读取模型数据
- QML TableView + QAbstractTableModel - 如何从 QML 编辑模型数据
- 在显示视图之前,是否可以在内部更改模型数据
- Qt:链接我的模型数据与QListView
- 是否有此分层模型数据的静态容器
- c++中多模型数据分析的设计模式
- 当单击视图中的项时,从另一个小部件访问自定义模型数据