【发布时间】:2011-01-15 22:15:28
【问题描述】:
我有一个树状多态数据结构,其中节点是类 Node 的实例(由我实现)或其任何子类。我的应用程序大量使用 Boost,节点实际上由 boost::shared_ptr 类型而不是 Node* 表示。
现在,我想创建一个 Qt 模型来包装我的树数据结构。因此,我需要一种将任何模型索引与内部数据结构中的节点相关联的方法。问题来了:
Qt 支持两种方式:
第一:
QModelIndex QAbstractItemModel::createIndex ( int row, int column, void * ptr = 0 ) const
为给定的模型创建一个索引 行和列与内部 指针。
第二个:
QModelIndex QAbstractItemModel::createIndex ( int row, int column, quint32 id ) const
为给定的模型创建一个索引 行和列与内部 标识符,id。
好的,在我的情况下,我应该如何准确地关联节点?不可能将 shared_ptr 与模型索引相关联...是的,我知道,我可以从 shared_ptr 接收原始指针并将其提供给 CreateIndex(),但它闻起来很糟糕 - 对我来说似乎太不安全了。
有什么想法吗?
顺便说一句,我觉得总体而言 Boost / Qt 集成似乎不是微不足道的,至少在内存管理方面。
10 倍很多。
【问题讨论】:
标签: qt oop model-view-controller model