Russian Qt Forum

Qt => Model-View (MV) => Тема начата: NOX86 от Февраль 14, 2010, 19:01



Название: [Решено] View, похожий на список виджетов в Qt Designer
Отправлено: NOX86 от Февраль 14, 2010, 19:01
-Задача:
Собственно сабж.
Т.е. требуется разбить элементы ListView по группам с возможностью сворачивания\разворачивания групп.
-Проблема:
Не хватает опыта разобраться с сырцами Qt Designer (много там понаворочено).
-Хотелось бы:
Увидеть простенькое объяснение или ткнуть в похожие примеры.
Спасибо


Название: Re: View, похожий на список виджетов в Qt Designer
Отправлено: break от Февраль 14, 2010, 21:12
Если требуется именно для ListView то задачка то не особо простая и вообще не совсем понятная - набросай крин што-ли. А вот если подойдет treeView то тогда все уже лучше - есть масса сторонних компонент для Qt - всякие property browser-ы, property-editor-ы, object-inspector-ы. В самой Qt есть QtTreePropertyBrowser в Qt Solutions

http://qt.nokia.com/products/appdev/add-on-products/catalog/4/Widgets/qtpropertybrowser/

он кстати может представлять элементы деревом, группами и выпадающими панельками по нажатию кнопки...

И кстати в дизайнере вполне возможно что TreeView замаскированный слегка - даже плюсики видны...


Название: Re: View, похожий на список виджетов в Qt Designer
Отправлено: lit-uriy от Февраль 14, 2010, 21:29
я думаю, что список виджетов можно реализовать примерно так:
Для элемента обозначающего  заголовок группы создать делегат, с плюсиком/минусиком. Предусмотреть атрибут "скрыт/показан" для группы элементов. В зависимости от состояния этого элемента-заголовка изменять состояние этого атрибута


Название: Re: View, похожий на список виджетов в Qt Designer
Отправлено: BRE от Февраль 14, 2010, 21:36
... и получиться дерево.  :)
IMHO, проще это сделать с QTreeView + модель + делегат.


Название: Re: View, похожий на список виджетов в Qt Designer
Отправлено: NOX86 от Февраль 14, 2010, 21:41
Спасибо за ответы
break, не совсем то что надо (но инфа весьма и весьма полезная)
lit-uriy, попробую.
В атаче картинка нужного элемента который видимо реализован в qt\tools\designer\src\components\widgetbox\
На сколько я понял реализовано как список деревьев (поправте если ошибаюсь) но там довольно много всяких фишек наворочено.
BRE, совершенно верно, но есть ли онтвет на след. вопрос:
"TreeView подошёл бы, но как скрыть (визуально) корневой элемент?"
Есть ли ещё предложения?


Название: Re: View, похожий на список виджетов в Qt Designer
Отправлено: BRE от Февраль 14, 2010, 21:43
void QTreeView::setRootIsDecorated ( bool show )


Название: Re: View, похожий на список виджетов в Qt Designer
Отправлено: lit-uriy от Февраль 14, 2010, 22:48
>>... и получиться дерево.
ну почти, не будет отступов подветвей, как у TreeView, и не будет пунктирчиков (обозначений веток)


Название: Re: View, похожий на список виджетов в Qt Designer
Отправлено: lit-uriy от Февраль 14, 2010, 23:06
Я нашёл исходник этого виджета: %QTDIR%\tools\designer\src\components\widgetbox\widgetboxtreewidget.h
Класс WidgetBoxTreeWidget, он является наследником QTreeWidget


Название: Re: View, похожий на список виджетов в Qt Designer
Отправлено: break от Февраль 15, 2010, 00:41
Цитировать
ну почти, не будет отступов подветвей, как у TreeView, и не будет пунктирчиков (обозначений веток)
А отступы нельзя стайл-шитами победить?


Название: Re: View, похожий на список виджетов в Qt Designer
Отправлено: NOX86 от Февраль 15, 2010, 04:33
break, а не подскажете ли как это сделать?
В принципе отступы не так и мешают, но можно и увеличить юзабилити.
И ещё, хотелось бы корневые  (те около которых плюсик есть) ноды выделить цветом фона.

Всем большое спасибо! Основной вопрос решён использованием Дерева без общего нода.


Название: Re: View, похожий на список виджетов в Qt Designer
Отправлено: break от Февраль 15, 2010, 04:50
Можно так:
1) Через style sheets - вид стрелочек( а также плюсики/минусики развернутости ) меняем на свои картинки, ставим пустые картнки чтобы скрыть стрелочки совсем
В ассистенты примеры в "Qt Style Sheets Examples-->Customizing QTreeView"
2) Потом ставим свойство indentation у TreeView в значение от 0 до 5 на выбор

Должно получиться...


Название: Re: [Решено] View, похожий на список виджетов в Qt Designer
Отправлено: NOX86 от Февраль 15, 2010, 05:31
Добился нужного мне результата. Большое спасибо.


Название: Re: [Решено] View, похожий на список виджетов в Qt Designer
Отправлено: Igors от Февраль 15, 2010, 05:42
У меня такое было, вот минимальный проект. Мой файл только TestBox.cpp - остальное передрал из исходников дизайнера.


Название: Re: [Решено] View, похожий на список виджетов в Qt Designer
Отправлено: NOX86 от Февраль 15, 2010, 15:39
Без коментариев. ПРЕВОСХОДНО!


Название: Re: [Решено] View, похожий на список виджетов в Qt Designer
Отправлено: GreatSnake от Март 31, 2010, 10:05
Хоть и решено, но может кому пригодится.
Есть библиотека Qxt (http://doc.libqxt.org/0.5.0/classes.html), в которой такой виджет (http://doc.libqxt.org/0.5.0/qxttreewidget.html#details) уже реализован. Помимо него есть и другие.