c++ - QTableWidget 与 QTableView

标签 c++ qt qtableview qtablewidget

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

那么我应该使用哪个 Widget:QTableWidget 还是 QTableView

谁能简要解释一下这个模型/ View 框架是什么?我不是计算机科学专业的,因此我觉得很难理解......

最佳答案

cmannett85 的推荐不错。阅读文档十几遍。

那么,如果性能和内存问题是您最关心的问题,并且您认为您可以超越 QTableWidget 实现,那么 QTableView QAbstractTableModel 之上的接口(interface)或 QStandardItemModel就是你要找的。

由于您不熟悉 Qt 的模型 View 架构,我建议您使用 QStandardItemModel,直到您觉得自己掌握了窍门。如果您的性能仍然不够好,请通过实现您的自定义模型来避免大量内存重复和浪费的对象。另外,让自己 a good textbook并阅读了它关于模型 View 框架的章节大约 12 遍。恕我直言,仅此部分就值金。

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

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

如果您觉得既便宜又勇敢,请查看 this excerpt关于实现您自己的自定义模型。一次使用一项功能,并在使用过程中使用它。

关于c++ - QTableWidget 与 QTableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15290932/

相关文章:

c++ - 在基本析构函数导致问题之前调用的派生析构函数

c++ - 使用 "<<"将值输入自定义类

c++ - QSystemSemaphore::acquire() 中止

c++ - 使用组合框在qt对话框中切换不同的表

python - 如何连接两个QTableview小部件?

c++ - 方法名前的 const 是什么意思?

c++ - std 类型别名的自定义点

c++ - C++03 中 std::unique_ptr 的模拟

c++ - 异步渲染到 Qt OpenGL 窗口

c++ - Qt模型-在单独的线程中查看数据和模型