Russian Qt Forum
Ноябрь 24, 2024, 15:11 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как в QAbstractItemModel узнать QModelIndex корневого элемента?  (Прочитано 5571 раз)
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« : Октябрь 25, 2010, 00:50 »

Здравствуйте!


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

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

Собираю информацию по крупицам
http://webhamster.ru
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #1 : Октябрь 25, 2010, 00:59 »

http://doc.trolltech.com/4.7/qabstractitemmodel.html#parent

Если он невалидный, значит текущий индекс = корневой.
Записан
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #2 : Октябрь 25, 2010, 13:03 »

http://doc.trolltech.com/4.7/qabstractitemmodel.html#parent

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

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

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

Собираю информацию по крупицам
http://webhamster.ru
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Октябрь 25, 2010, 14:02 »

Можно отнаследоваться от QStandardItemModel и получить root index через QStandardItemModel::invisibleRootItem()->index().
Насколько я понял, QAbstractItemModel не имеет root index-а.
Записан

Qt 5.11/4.8.7 (X11/Win)
Kolobok
Гость
« Ответ #4 : Октябрь 25, 2010, 14:09 »

Код:
for( int row = 0; row < model->rowCount() - 1; ++row )
{
  QModelIndex topLevelIndex = model->index( row, 0 );
  ...
}
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #5 : Октябрь 25, 2010, 15:57 »

xintrea, уточняй вопрос. т.к. первый ответ, на мой взгляд, полностью корректный и не требует никакого дополнительного индекса.
Записан

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 22.