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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено] View, похожий на список виджетов в Qt Designer  (Прочитано 12265 раз)
NOX86
Гость
« : Февраль 14, 2010, 19:01 »

-Задача:
Собственно сабж.
Т.е. требуется разбить элементы ListView по группам с возможностью сворачивания\разворачивания групп.
-Проблема:
Не хватает опыта разобраться с сырцами Qt Designer (много там понаворочено).
-Хотелось бы:
Увидеть простенькое объяснение или ткнуть в похожие примеры.
Спасибо
« Последнее редактирование: Февраль 15, 2010, 05:30 от NOX86 » Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #1 : Февраль 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 замаскированный слегка - даже плюсики видны...
« Последнее редактирование: Февраль 14, 2010, 21:14 от break » Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #2 : Февраль 14, 2010, 21:29 »

я думаю, что список виджетов можно реализовать примерно так:
Для элемента обозначающего  заголовок группы создать делегат, с плюсиком/минусиком. Предусмотреть атрибут "скрыт/показан" для группы элементов. В зависимости от состояния этого элемента-заголовка изменять состояние этого атрибута
Записан

Юра.
BRE
Гость
« Ответ #3 : Февраль 14, 2010, 21:36 »

... и получиться дерево.  Улыбающийся
IMHO, проще это сделать с QTreeView + модель + делегат.
Записан
NOX86
Гость
« Ответ #4 : Февраль 14, 2010, 21:41 »

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

void QTreeView::setRootIsDecorated ( bool show )
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #6 : Февраль 14, 2010, 22:48 »

>>... и получиться дерево.
ну почти, не будет отступов подветвей, как у TreeView, и не будет пунктирчиков (обозначений веток)
Записан

Юра.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #7 : Февраль 14, 2010, 23:06 »

Я нашёл исходник этого виджета: %QTDIR%\tools\designer\src\components\widgetbox\widgetboxtreewidget.h
Класс WidgetBoxTreeWidget, он является наследником QTreeWidget
Записан

Юра.
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #8 : Февраль 15, 2010, 00:41 »

Цитировать
ну почти, не будет отступов подветвей, как у TreeView, и не будет пунктирчиков (обозначений веток)
А отступы нельзя стайл-шитами победить?
Записан
NOX86
Гость
« Ответ #9 : Февраль 15, 2010, 04:33 »

break, а не подскажете ли как это сделать?
В принципе отступы не так и мешают, но можно и увеличить юзабилити.
И ещё, хотелось бы корневые  (те около которых плюсик есть) ноды выделить цветом фона.

Всем большое спасибо! Основной вопрос решён использованием Дерева без общего нода.
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #10 : Февраль 15, 2010, 04:50 »

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

Должно получиться...
Записан
NOX86
Гость
« Ответ #11 : Февраль 15, 2010, 05:31 »

Добился нужного мне результата. Большое спасибо.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #12 : Февраль 15, 2010, 05:42 »

У меня такое было, вот минимальный проект. Мой файл только TestBox.cpp - остальное передрал из исходников дизайнера.
Записан
NOX86
Гость
« Ответ #13 : Февраль 15, 2010, 15:39 »

Без коментариев. ПРЕВОСХОДНО!
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #14 : Март 31, 2010, 10:05 »

Хоть и решено, но может кому пригодится.
Есть библиотека Qxt, в которой такой виджет уже реализован. Помимо него есть и другие.
Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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