【问题标题】:QTableWidget vs QTableViewQTableWidget 与 QTableView
【发布时间】:2013-02-23 19:36:01
【问题描述】:

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

那么我应该使用哪个 Widget:QTableWidgetQTableView

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

【问题讨论】:

    标签: c++ qt qtableview qtablewidget


    【解决方案1】:

    要了解该框架,请从documentation 开始了解它。它开始缓慢,但变得适度广泛,涵盖了所涉及的大部分课程。

    QTableWidget 还是 QTableView?

    一旦您阅读了文档,您就会明白为什么这个问题没有任何意义:QTableWidget使用QTableView 来显示数据。 QTableWidget(连同QTreeWidget 等)使用MVC 框架,但它将所有内容封装到一个方便的包中,可用于大多数用途,但如果您需要做一些不同的事情,则必须将其破解为它的组件零件并重新实现您需要的部分。

    【讨论】:

    • 感谢您阅读该文档大约 2-3 次,开始掌握它。
    • QTableWidget 使用QTableView,这实际上是我想要的信息,谢谢。编辑:我看到QTableWidget 甚至是QTableView
    【解决方案2】:

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

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

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

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

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

    如果您觉得既便宜又勇敢,请查看this excerpt,了解如何实现您自己的自定义模型。一次使用一项功能,然后随心所欲地使用它。

    【讨论】:

    • 谢谢你,我会买那本书并听从你的指导。
    • “此摘录”链接现已失效
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    • 2013-05-14
    相关资源
    最近更新 更多