我即将实施类似于:http://doc.qt.nokia.com/latest/itemviews-simpletreemodel.html
的内容我有一个类型aosl :: Object,它包含Objects树中节点的所有数据。
我想在QTreeView中显示一些信息。所以我似乎需要实现一个继承自QAbstractItemModel的类,以允许视图利用数据。到现在为止还挺好。该类与示例中的TreeItemModel类类似。
但是,在该示例中,它们还实现了一个TreeItem类,它似乎保存了树节点所需的数据。它不是QObject或与Qt相关的东西 - 这是我怀疑的地方。
所以问题是:我需要在我的QAbstractItemModel中使用另一种类型而不是我的aosl :: Object类型,还是可以按原样使用它而不必添加另一种“item”类型?
答案 0 :(得分:2)
QAbstractItemModel的外部接口在QModelIndex和QVariant上运行soley - 没有内部结构暴露给视图类。只要您的类(aosl :: Object)可以提供实现QAbstractItemModel decenant所需的所有信息,您就不需要将其包装到QObject中,或者无论如何。
答案 1 :(得分:1)
如果您查看课程TreeModel
,就会发现它充当TreeItem
和QAbstractItemModel
之间的桥梁。使用此模式,TreeItem
不依赖QAbstractItemModel
,QAbstractItemModel
也不依赖TreeItem
。
这是一种有用的模式,因为它使您的应用程序不那么复杂。例如,在您的情况下,这意味着您的aosl::Object
类不需要仅因为要在(QAbstractItemModel)树中显示它而需要更改。