Russian Qt Forum
Ноябрь 23, 2024, 00:12
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Qt Quick
(Модератор:
navrocky
) >
Expanding delegate
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Expanding delegate (Прочитано 4135 раз)
mutineer
Гость
Expanding delegate
«
:
Март 26, 2012, 00:23 »
Привет. Кто-нить сталкивался с ListView, у которого айтемы умеют разворачиваться/сворачиваться по клику?
Стандартный пример
Expanding Delegate ListView Example
не подходит, так как:
сворачивается только по клику на сам развернутый элемент. А надо чтобы по клику на свернутый элемент он разворачивался, а предыдущий развернутый сворачивался
состояние развернут/свернут хранится в самом делегате, что не подходит, так как делегат уничтожается при уходе за границы экрана
текущий рабочий вариант - проперти expandedIndex у листа, и два состояния у делегата, зависящих от того, равен ли индекс самого делегата этому expandedIndex. Но этот вариант мне не очень нравится (делегат зависит от проперти листа), а другого придумать пока не могу. Может кто поможет?
Записан
Bepec
Гость
Re: Expanding delegate
«
Ответ #1 :
Март 26, 2012, 07:00 »
Эм... Я не сильно то и углублялся в делегаты, но чем не устраивает самописная модель?
Список пар <значение, количество подэлементов> и переменная lastExpanding.
При нажатии на "плюсик/уголок/разворачиватель" сворачивать lastExpanding, и присваивать ему текущее значение, если есть подъэлементы.
offtop: Напомни пожалуйста, размер ячейки задаётся в делегате каким параметром?
Записан
mutineer
Гость
Re: Expanding delegate
«
Ответ #2 :
Март 26, 2012, 10:07 »
Хранить состояние развернут/свернут в модели? ну это не модели дело знать кто там на экране развернут, а кто свернут. К тому же, а если вьюх будет две? получится ерунда
offtop: в qml размер делегата задается width, height самого делегата
Записан
Bepec
Гость
Re: Expanding delegate
«
Ответ #3 :
Март 26, 2012, 10:30 »
Хм. Если 2 и больше.
Не вижу простых решений, но вот моё мнение:
Если не модель должна знать о том, кто там на экране свёрнут - развёрнут, то тогда всё нужно(а точнее другого способа нет) сосредоточить в делегате. А тут большое НО. Он тоже незнает о том, кто свёрнут - развёрнут. И вью будет незнать кто свёрнут - развёрнут.
Если же пойти по примеру QTree, то там именно модель знает, кто свёрнут/развёрнут. Только тут минус, что я не интересовался механизмом разделения на несколько вью.
Записан
BRE
Гость
Re: Expanding delegate
«
Ответ #4 :
Март 26, 2012, 10:49 »
Цитата: mutineer от Март 26, 2012, 10:07
Хранить состояние развернут/свернут в модели? ну это не модели дело знать кто там на экране развернут, а кто свернут. К тому же, а если вьюх будет две? получится ерунда
А ты заведи еще одну специализированную модель (ItemExpandedModel), по аналогии с QItemSelectionModel, которая будет хранить и управлять развернутыми группами для каждого view.
Записан
mutineer
Гость
Re: Expanding delegate
«
Ответ #5 :
Март 26, 2012, 11:05 »
Цитата: BRE от Март 26, 2012, 10:49
Цитата: mutineer от Март 26, 2012, 10:07
Хранить состояние развернут/свернут в модели? ну это не модели дело знать кто там на экране развернут, а кто свернут. К тому же, а если вьюх будет две? получится ерунда
А ты заведи еще одну специализированную модель (ItemExpandedModel), по аналогии с QItemSelectionModel, которая будет хранить и управлять развернутыми группами для каждого view.
Идея интересная. А как эту дополнительную модель всунуть в ListView ?
Записан
BRE
Гость
Re: Expanding delegate
«
Ответ #6 :
Март 26, 2012, 11:10 »
Цитата: mutineer от Март 26, 2012, 11:05
Идея интересная. А как эту дополнительную модель всунуть в ListView ?
Сделать свой класс-наследник от QTreeView/QListView.
Записан
mutineer
Гость
Re: Expanding delegate
«
Ответ #7 :
Март 26, 2012, 11:11 »
Цитата: BRE от Март 26, 2012, 11:10
Цитата: mutineer от Март 26, 2012, 11:05
Идея интересная. А как эту дополнительную модель всунуть в ListView ?
Сделать свой класс-наследник от QTreeView.
А вот это уже печалька. В QML нету TreeView и писать собственную вьюху QML-ную не хотелось
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...