Как перебрать все индексы в Tree Model - PullRequest
1 голос
/ 07 мая 2019

Я хочу перебрать все индексы в модели дерева, как показано на рисунке.

Функция, которую я написал, выдает ошибку переполнения стека.

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

enter image description here

1 Ответ

3 голосов
/ 07 мая 2019

Передать текущий индекс как параметр QAbstractItemModel::rowCount(), чтобы получить его количество строк.В противном случае вы получите количество корневых элементов в вашем дереве.

Итак, замените auto rows = model->rowCount(); на auto rows = model->rowCount(index);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...