Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QTableWidget与QTableView_C++_Qt_Qtableview_Qtablewidget - Fatal编程技术网

C++ QTableWidget与QTableView

C++ QTableWidget与QTableView,c++,qt,qtableview,qtablewidget,C++,Qt,Qtableview,Qtablewidget,我不熟悉Qt的这个模型/视图框架。在我的应用程序中,我希望有1000 X 1000个单元。应该有最小的内存需求&它应该很快。我不知道这个模型术语是用来做什么的。但是我有自己的类,它知道如何处理存储在表中的双变量。目前,我正在使用QLineEdit和验证器来创建单元格数组。但对于大于50 X 50的细胞来说,速度太慢了。所以我决定走一条好老路 那么我应该使用哪个小部件:QTableWidget或QTableView 谁能简单地解释一下这个模型/视图框架是什么?我不是一个计算机科学专业的人,因此我发

我不熟悉Qt的这个模型/视图框架。在我的应用程序中,我希望有1000 X 1000个单元。应该有最小的内存需求&它应该很快。我不知道这个模型术语是用来做什么的。但是我有自己的类,它知道如何处理存储在表中的双变量。目前,我正在使用QLineEdit和验证器来创建单元格数组。但对于大于50 X 50的细胞来说,速度太慢了。所以我决定走一条好老路

那么我应该使用哪个小部件:
QTableWidget
QTableView


谁能简单地解释一下这个模型/视图框架是什么?我不是一个计算机科学专业的人,因此我发现很难理解…

要理解这个框架,首先要了解它。它开始缓慢,但变得适度广泛,涵盖了所涉及的大多数类

QTableWidget还是QTableView


阅读文档后,您将看到为什么这个问题没有真正意义:
QTableWidget
使用
QTableView
来显示数据
QTableWidget
(以及
QTreeWidget
等)使用MVC框架,但它将所有内容封装到一个方便的包中,对大多数用途都很有用,但如果需要做一些不同的事情,则必须将其分解为组件部分,并重新实现所需的位。

cmannett85的建议是一个很好的建议。把这些文件读十几遍

然后,如果性能和内存问题是您主要关心的问题,并且您认为您可以超越QTableWidget实现,那么在or之上的接口就是您想要的

由于您不熟悉Qt的模型视图体系结构,我建议您使用QStandardItemModel,直到您感觉自己掌握了其中的诀窍。若您的性能仍然不够好,那个么通过实现自定义模型来避免大量内存复制和对象浪费。另外,让你自己阅读它关于模型视图框架的章节大约12遍。伊姆霍说,仅这一部分的黄金价值就相当于它的重量

以下是Qt的自定义模型视图框架的基础知识:

  • 您的实际数据存储在某个列表/树中
  • 模型为查询和编辑数据提供了标准框架
  • 代理模型允许您在不影响原始模型的情况下对数据进行排序/筛选
  • 视图提供了一种直观观察数据并与数据交互的方法
  • 委托(通常是可选的)调整数据的外观,并为数据提供自定义编辑器

如果你觉得既便宜又勇敢,那就试试实现你自己的定制模型吧。一次完成一个功能,然后边走边玩。

谢谢你,我会买那本书并按照你的指导去做。“这个摘录”链接现在已经失效了。谢谢你读了大约2-3遍,开始了解它。
QTableWidget
使用了一个
QTableView
,这实际上就是我想要的信息,谢谢。编辑:我看到
QTableWidget
甚至是
QTableView