使用模型项的Qt模型/视图:是否需要特定的视图项?

时间:2011-09-19 12:47:03

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

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

的内容

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

我想在QTreeView中显示一些信息。所以我似乎需要实现一个继承自QAbstractItemModel的类,以允许视图利用数据。到现在为止还挺好。该类与示例中的TreeItemModel类类似。

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

所以问题是:我需要在我的QAbstractItemModel中使用另一种类型而不是我的aosl :: Object类型,还是可以按原样使用它而不必添加另一种“item”类型?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

如果您查看课程TreeModel,就会发现它充当TreeItemQAbstractItemModel之间的桥梁。使用此模式,TreeItem不依赖QAbstractItemModelQAbstractItemModel也不依赖TreeItem

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