目前我正在使用此代码遍历 Tree 项目的所有子项。
void iterate(const QModelIndex & index, const QAbstractItemModel * model)
{
if (index.isValid())
{
// Do action here
}
if (!model->hasChildren(index) || (index.flags() &
Qt::ItemNeverHasChildren))
{
return;
}
auto rows = model->rowCount(index);
for (int i = 0; i < rows; ++i)
iterate(model->index(i, 0, index), model);
}
我需要使用树项而不是索引进行迭代
void iterate(TreeItem *item, const QAbstractItemModel * model)
我能想到的一种方法是使用 createIndex 函数获取项目的索引,上面的代码将使用它。
还有其他方法可以做到这一点吗?
如果您使用的是QStandardItemModel
,则可以使用以下indexFromItem
方法:
QModelIndex QStandardItemModel::indexFromItem(const QStandardItem *item( const
如果您使用的是自己的实现,则可以提供自己的indexFromItem
和itemFromIndex
方法。
另一种解决方案可能涉及调用QAbstractItemModel::createIndex
。