Название: Expanding delegate Отправлено: mutineer от Март 26, 2012, 00:23 Привет. Кто-нить сталкивался с ListView, у которого айтемы умеют разворачиваться/сворачиваться по клику?
Стандартный пример Expanding Delegate ListView Example не подходит, так как:
текущий рабочий вариант - проперти expandedIndex у листа, и два состояния у делегата, зависящих от того, равен ли индекс самого делегата этому expandedIndex. Но этот вариант мне не очень нравится (делегат зависит от проперти листа), а другого придумать пока не могу. Может кто поможет? Название: Re: Expanding delegate Отправлено: Bepec от Март 26, 2012, 07:00 Эм... Я не сильно то и углублялся в делегаты, но чем не устраивает самописная модель?
Список пар <значение, количество подэлементов> и переменная lastExpanding. При нажатии на "плюсик/уголок/разворачиватель" сворачивать lastExpanding, и присваивать ему текущее значение, если есть подъэлементы. offtop: Напомни пожалуйста, размер ячейки задаётся в делегате каким параметром? Название: Re: Expanding delegate Отправлено: mutineer от Март 26, 2012, 10:07 Хранить состояние развернут/свернут в модели? ну это не модели дело знать кто там на экране развернут, а кто свернут. К тому же, а если вьюх будет две? получится ерунда
offtop: в qml размер делегата задается width, height самого делегата Название: Re: Expanding delegate Отправлено: Bepec от Март 26, 2012, 10:30 Хм. Если 2 и больше.
Не вижу простых решений, но вот моё мнение: Если не модель должна знать о том, кто там на экране свёрнут - развёрнут, то тогда всё нужно(а точнее другого способа нет) сосредоточить в делегате. А тут большое НО. Он тоже незнает о том, кто свёрнут - развёрнут. И вью будет незнать кто свёрнут - развёрнут. Если же пойти по примеру QTree, то там именно модель знает, кто свёрнут/развёрнут. Только тут минус, что я не интересовался механизмом разделения на несколько вью. Название: Re: Expanding delegate Отправлено: BRE от Март 26, 2012, 10:49 Хранить состояние развернут/свернут в модели? ну это не модели дело знать кто там на экране развернут, а кто свернут. К тому же, а если вьюх будет две? получится ерунда А ты заведи еще одну специализированную модель (ItemExpandedModel), по аналогии с QItemSelectionModel, которая будет хранить и управлять развернутыми группами для каждого view.Название: Re: Expanding delegate Отправлено: mutineer от Март 26, 2012, 11:05 Хранить состояние развернут/свернут в модели? ну это не модели дело знать кто там на экране развернут, а кто свернут. К тому же, а если вьюх будет две? получится ерунда А ты заведи еще одну специализированную модель (ItemExpandedModel), по аналогии с QItemSelectionModel, которая будет хранить и управлять развернутыми группами для каждого view.Идея интересная. А как эту дополнительную модель всунуть в ListView ? Название: Re: Expanding delegate Отправлено: BRE от Март 26, 2012, 11:10 Идея интересная. А как эту дополнительную модель всунуть в ListView ? Сделать свой класс-наследник от QTreeView/QListView. :)Название: Re: Expanding delegate Отправлено: mutineer от Март 26, 2012, 11:11 Идея интересная. А как эту дополнительную модель всунуть в ListView ? Сделать свой класс-наследник от QTreeView. :)А вот это уже печалька. В QML нету TreeView и писать собственную вьюху QML-ную не хотелось |