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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено] Сделать expandable  (Прочитано 4101 раз)
andrew.k
Гость
« : Июль 23, 2012, 14:29 »

Нужно, чтобы некоторые элементы в древовидной модели имели значок разворачивания (плюсик).
А по его нажатию уже происходит подгрузка дочерних элементов.
Т.е. на сервере элементы есть, но они еще не подгружены в модель, а подгрузить их надо, только после разворачивания элемента.

Как это сделать?
« Последнее редактирование: Июль 23, 2012, 16:03 от andrew.k » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Июль 23, 2012, 14:34 »

hasChildren должно вернуть true.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
andrew.k
Гость
« Ответ #2 : Июль 23, 2012, 14:42 »

hasChildren должно вернуть true.
Спасибо, че-то лопухнулся, не заметил Улыбающийся
Записан
Akon
Гость
« Ответ #3 : Июль 23, 2012, 15:41 »

Скорее rowCount() для данного парента должно вернуть не ноль, не?
Записан
andrew.k
Гость
« Ответ #4 : Июль 23, 2012, 16:02 »

Скорее rowCount() для данного парента должно вернуть не ноль, не?
Не. Если rowCount() вернет не ноль, тогда вьюха будет запрашивать данные несуществующих элементов в попытке их отрисовать.
А с hasChildren все хорошо. Корешок появился. Но разворачивать нечего. То что надо)
Записан
Akon
Гость
« Ответ #5 : Июль 24, 2012, 08:15 »

А зачем вьюхе запрашивать дочерние айтемы, если парент свернут? Моя логика была такой: rowCount для парента возвращает не ноль, парент свернут, корешок виден, при раскрытии будет подгрузка дочерних данных. Другими словами, QAbstractItemModel::data() будет для дочерних данных вызвана первый раз при раскрытии парента. Впрочем, я не анализировал сорцы, и вполне вероятно, ошибаюсь. То, что hasChildren виртуальная (базовая реализация как раз опирается на rowCount()) - довод не в пользу моих рассуждений.
Записан
andrew.k
Гость
« Ответ #6 : Июль 24, 2012, 10:24 »

А зачем вьюхе запрашивать дочерние айтемы, если парент свернут? Моя логика была такой: rowCount для парента возвращает не ноль, парент свернут, корешок виден, при раскрытии будет подгрузка дочерних данных. Другими словами, QAbstractItemModel::data() будет для дочерних данных вызвана первый раз при раскрытии парента. Впрочем, я не анализировал сорцы, и вполне вероятно, ошибаюсь. То, что hasChildren виртуальная (базовая реализация как раз опирается на rowCount()) - довод не в пользу моих рассуждений.
вьюха данные захочет сразу, как айтем будет развернут, но их еще нет, они только в этот момент начали загружаться. А загрузка занимает время.
Может этот вариант бы подошел, если бы данные были доступны сразу, по необходимости, например в файле. А так нет.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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