如何迭代树模型中的所有索引

5 qt qt5

我想迭代树模型中的所有索引,如图所示。

我编写的函数给出了堆栈溢出错误。

void iterate(const QModelIndex & index, const QAbstractItemModel * model)
{
     if (index.isValid())
          PrintData( index );

     if (!model->hasChildren(index) || (index.flags() & Qt::ItemNeverHasChildren))
     {
          return;
     }
     auto rows = model->rowCount();
     for (int i = 0; i < rows; ++i)
         iterate(model->index(i, 0, index), model);
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Rom*_*rev 7

将当前索引作为 的参数传递QAbstractItemModel::rowCount()以获取其行数。否则,您将获得树中根项目的数量。

所以,替换auto rows = model->rowCount();auto rows = model->rowCount(index);