循环访问树项的所有子项

  • 本文关键字:循环 访问 qt qt5
  • 更新时间 :
  • 英文 :


目前我正在使用此代码遍历 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

如果您使用的是自己的实现,则可以提供自己的indexFromItemitemFromIndex方法。

另一种解决方案可能涉及调用QAbstractItemModel::createIndex

相关内容

  • 没有找到相关文章

最新更新