我是Qt的模型/视图框架的新手。在我的应用程序中,我希望有1000 X 1000个单元格。应该有最低的内存要求,而且速度应该很快。我不知道这个模型术语是什么。但我有自己的类,知道如何处理存储在表中的双变量。目前我正在使用QLineEdit的验证器来创建单元格数组。但是对于大于50 X 50的单元格来说太慢了。所以我决定走老式的MS Excel的路。那么我应该使用哪个小部件:一个月还是一个月有没有人能简短地解释一下这个模型/视图框架是什么?我不是计算机科学的人,所以我觉得很坚韧理解...
tyu7yeag1#
cmannett 85的推荐很好,把文档看十几遍。然后,如果性能和内存问题是您主要关心的问题,并且您认为您可以超越QTableWidget实现,那么QAbstractTableModel或QStandardItemModel之上的QTableView接口就是您所寻找的。由于您是Qt的模型-视图架构的新手,我建议您使用QStandardItemModel,直到您觉得自己掌握了它的窍门为止。如果您的性能仍然不够好,请通过实现自定义模型来避免大量的内存重复和对象浪费。另外,买一个a good textbook,把它关于模型-视图框架的章节读12遍,光是那一节就值这个重量的金子,imho。以下是Qt自定义模型-视图框架的基础知识:
如果你觉得自己既廉价又勇敢,可以看看this excerpt如何实现你自己的定制模型,一次做一个函数,边做边玩。
mzaanser2#
要理解这个框架,请从documentation开始,它开始时很慢,但变得相当广泛,并覆盖了所涉及的大多数类。Q表格控件还是Q表格视图?一旦你读了文档,你会明白为什么这个问题没有任何意义:QTableWidget * 使用 * QTableView来显示数据。QTableWidget(沿着QTreeWidget等)使用MVC框架,但它将所有内容封装到一个对大多数用途都有用的方便包中,但如果您需要做一些不同的事情,则必须将其分解为组件部分并重新实现所需的部分。
QTableWidget
QTableView
QTreeWidget
2条答案
按热度按时间tyu7yeag1#
cmannett 85的推荐很好,把文档看十几遍。
然后,如果性能和内存问题是您主要关心的问题,并且您认为您可以超越QTableWidget实现,那么QAbstractTableModel或QStandardItemModel之上的QTableView接口就是您所寻找的。
由于您是Qt的模型-视图架构的新手,我建议您使用QStandardItemModel,直到您觉得自己掌握了它的窍门为止。如果您的性能仍然不够好,请通过实现自定义模型来避免大量的内存重复和对象浪费。另外,买一个a good textbook,把它关于模型-视图框架的章节读12遍,光是那一节就值这个重量的金子,imho。
以下是Qt自定义模型-视图框架的基础知识:
*代理模型允许您在不影响原始模型的情况下对数据进行排序/过滤
*委托(通常可选)调整数据的外观并为数据提供自定义编辑器
如果你觉得自己既廉价又勇敢,可以看看this excerpt如何实现你自己的定制模型,一次做一个函数,边做边玩。
mzaanser2#
要理解这个框架,请从documentation开始,它开始时很慢,但变得相当广泛,并覆盖了所涉及的大多数类。
Q表格控件还是Q表格视图?
一旦你读了文档,你会明白为什么这个问题没有任何意义:
QTableWidget
* 使用 *QTableView
来显示数据。QTableWidget
(沿着QTreeWidget
等)使用MVC框架,但它将所有内容封装到一个对大多数用途都有用的方便包中,但如果您需要做一些不同的事情,则必须将其分解为组件部分并重新实现所需的部分。