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

C++ 使用模型项的Qt模型/视图:是否需要特定视图项?,c++,model-view-controller,qt,C++,Model View Controller,Qt,我将要实现类似的功能: 我有一个类型,aosl::Object,它包含对象树中节点的所有数据 我想在QTreeView中显示一些信息。因此,我似乎需要实现一个继承自QabStratemModel的类,以允许视图利用数据。到现在为止,一直都还不错。该类与示例中的TreeItemModel类类似 但是,在本例中,它们还实现了一个TreeItem类,该类似乎保存了树节点所需的数据。这不是一个QoObject或与Qt相关的东西——这就是我的疑问的来源 所以问题是:我的QAbstractItemModel

我将要实现类似的功能:

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

我想在QTreeView中显示一些信息。因此,我似乎需要实现一个继承自QabStratemModel的类,以允许视图利用数据。到现在为止,一直都还不错。该类与示例中的TreeItemModel类类似

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


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

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

如果您查看类
TreeModel
,您会发现它充当
TreeItem
QAbstractItemModel
之间的桥梁。使用此模式,
TreeItem
不依赖于
qabstracttemmodel
qabstracttemmodel
也不依赖于
TreeItem

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