2011-09-19 78 views
1

我即将实现类似于:http://doc.qt.nokia.com/latest/itemviews-simpletreemodel.html使用模型项目的Qt模型/视图:是否需要特定的视图项目?

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

我想在QTreeView中显示一些信息。所以看来我需要实现一个从QAbstractItemModel继承的类来允许视图利用数据。到现在为止还挺好。该类将像示例中的TreeItemModel类一样。

但是,在这个例子中,他们也实现了一个TreeItem类,该类似乎拥有树节点所需的数据。它不是QObject或与Qt相关的东西 - 这是我的疑问来自何处。

所以问题是:我是否需要在我的QAbstractItemModel中有另一种类型比我的aosl :: Object类型,或者我可以使用它作为withtout不得不添加另一个“item”类型?

回答

2

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

1

如果你看看TreeModel这个类,你会发现它是TreeItemQAbstractItemModel之间的桥梁。使用此模式,TreeItem不取决于QAbstractItemModelQAbstractItemModel也不取决于TreeItem

这是一个有用的模式,因为它使您的应用程序更简单。就你而言,例如,这意味着你的aosl::Object类不需要改变,只是因为你想在(QAbstractItemModel)树中显示它。

相关问题