QTableWidget与QTableView

Coo*_*der 29 c++ qt qtableview qtablewidget

我是Qt模型/视图框架的新手.在我的应用程序中,我想要1000 X 1000个单元格.应该有最低内存要求,它应该很快.我不知道这个模型的术语是什么.但我有自己的类知道如何处理存储在表中的双变量.目前我正在使用QLineEdit和Validator来创建单元格数组.但对于> 50 X 50的细胞来说,它太慢了.所以我决定采用旧的MS Excel方式.

那么我应该使用哪个Widget:QTableWidget或者QTableView

任何人都可以简要解释一下这个Model/View框架是什么?我不是计算机科学家,因此我觉得很难理解......

Phl*_*ous 18

cmannett85的建议很好.阅读文档大约十几次.

然后,如果性能和内存问题是您主要关注的问题,并且您认为可以超出QTableWidget实现,那么QAbstractTableModelQStandardItemModel之上的QTableView接口就是您正在寻找的.

由于您是Qt的模型 - 视图架构的新手,我建议您使用QStandardItemModel,直到您感觉自己已经掌握了它.如果您的性能仍然不够好,请通过实现自定义模型来避免大量内存重复和浪费的对象.另外,给自己一本好的教科书,阅读关于模型 - 视图框架的章节大约12次.只有这一部分值得用黄金计算,imho.

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

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

如果您感觉既便宜又勇敢,请查看有关实施您自己的自定义模型的摘录.一次完成一项功能,随时随地玩它.


cma*_*t85 11

要了解该框架,请从相关文档开始.它起步缓慢,但变得适度广泛,涵盖了大部分相关课程.

QTableWidget还是QTableView?

一旦你阅读了文档,你就会明白为什么这个问题没有任何意义:a QTableWidget 使用 a QTableView来显示数据. QTableWidget(以及QTreeWidget等)使用MVC框架,但它将它全部封装到一个方便的包中,可用于大多数目的,但如果你需要做一些不同的事情,你将不得不将它破解成它的组成部分并重新实现你的位需要.

  • `QTableWidget` 使用 `QTableView`,这实际上是我想要的信息,谢谢。编辑:我看到 `QTableWidget` 甚至是一个 `QTableView` (4认同)