QTableWidget与QTableView

时间:2013-03-08 09:42:27

标签: c++ qt qtableview qtablewidget

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

我应该使用哪个小部件:QTableWidgetQTableView

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

2 个答案:

答案 0 :(得分:18)

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

然后,如果性能和内存问题是您主要关注的问题,并且您认为可以超出QTableWidget实现,那么QTableViewQAbstractTableModel之上的QStandardItemModel界面是你在寻找什么。

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

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

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

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

答案 1 :(得分:11)

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

  

QTableWidget或QTableView?

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