首页 > 解决方案 > 如何遍历树模型中的所有索引

问题描述

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

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

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);
}

在此处输入图像描述

标签: qtqt5

解决方案


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

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


推荐阅读