【问题标题】:Qt model/view using model item : is specific view item required?使用模型项的 Qt 模型/视图:是否需要特定的视图项?
【发布时间】:2011-09-19 21:24:37
【问题描述】:

我即将实现类似于:http://doc.qt.nokia.com/latest/itemviews-simpletreemodel.html

我有一个类型,aosl::Object,它包含对象树中节点的所有数据。

我想在 QTreeView 中显示一些信息。所以看来我需要实现一个继承自 QAbstractItemModel 的类,以允许视图利用数据。到目前为止,一切都很好。该类类似于示例中的 TreeItemModel 类。

但是,在示例中,它们还实现了一个 TreeItem 类,该类似乎保存了树节点所需的数据。它不是 QObject 或与 Qt 相关的东西——这就是我的怀疑来源。

所以问题是:我是否需要在我的 QAbstractItemModel 中使用我的 aosl::Object 类型以外的其他类型,或者我可以按原样使用它而不必添加另一个“项目”类型?

【问题讨论】:

    标签: c++ model-view-controller qt


    【解决方案1】:

    QAbstractItemModel 的外部接口仅在 QModelIndex 和 QVariant 上运行 - 没有内部结构暴露给视图类。只要您的类 (aosl::Object) 可以提供实现 QAbstractItemModel decenant 所需的所有信息,您就不需要将其包装到 QObject 或其他任何方式中。

    【讨论】:

      【解决方案2】:

      如果您查看 TreeModel 类,您会发现它充当了 TreeItemQAbstractItemModel 之间的桥梁。使用这种模式,TreeItem 不依赖于QAbstractItemModelQAbstractItemModel 也不依赖于TreeItem

      这是一个有用的模式,因为它可以让您的应用程序变得不那么复杂。例如,在您的情况下,这意味着您的 aosl::Object 类不需要仅仅因为您想在 (QAbstractItemModel) 树中显示它而进行更改。

      【讨论】:

        猜你喜欢
        • 2015-07-05
        • 2013-01-22
        • 1970-01-01
        • 1970-01-01
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        • 2017-05-15
        • 2016-07-18
        相关资源
        最近更新 更多