Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: xintrea от Октябрь 25, 2010, 00:50



Название: Как в QAbstractItemModel узнать QModelIndex корневого элемента?
Отправлено: xintrea от Октябрь 25, 2010, 00:50
Здравствуйте!


Потребовалось мне тут выяснить QModelIndex корневого элемента для класса, унаследованного от QAbstractItemModel. Нужно это для того, чтобы рекурсивно пробежаться по QModelIndex-веткам этой модели.

Вопрос. Как обратиться к корневому элементу класса QAbstractItemModel?


Название: Re: Как в QAbstractItemModel узнать QModelIndex корневого элемента?
Отправлено: Sergey B. от Октябрь 25, 2010, 00:59
http://doc.trolltech.com/4.7/qabstractitemmodel.html#parent

Если он невалидный, значит текущий индекс = корневой.


Название: Re: Как в QAbstractItemModel узнать QModelIndex корневого элемента?
Отправлено: xintrea от Октябрь 25, 2010, 13:03
http://doc.trolltech.com/4.7/qabstractitemmodel.html#parent

Если он невалидный, значит текущий индекс = корневой.

Вы предлагаете метод, который требует наличия некого QModelIndex, у которого предлагаете проверить parent. Если parent невалидный, то рассматриваемый QModelIndex - корневой.

Вопрос в том, как получить этот некий QModelIndex?


Название: Re: Как в QAbstractItemModel узнать QModelIndex корневого элемента?
Отправлено: GreatSnake от Октябрь 25, 2010, 14:02
Можно отнаследоваться от QStandardItemModel и получить root index через QStandardItemModel::invisibleRootItem()->index().
Насколько я понял, QAbstractItemModel не имеет root index-а.


Название: Re: Как в QAbstractItemModel узнать QModelIndex корневого элемента?
Отправлено: Kolobok от Октябрь 25, 2010, 14:09
Код:
for( int row = 0; row < model->rowCount() - 1; ++row )
{
  QModelIndex topLevelIndex = model->index( row, 0 );
  ...
}


Название: Re: Как в QAbstractItemModel узнать QModelIndex корневого элемента?
Отправлено: lit-uriy от Октябрь 25, 2010, 15:57
xintrea, уточняй вопрос. т.к. первый ответ, на мой взгляд, полностью корректный и не требует никакого дополнительного индекса.