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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: WidgetBox аля Qt Designer (creator)  (Прочитано 11875 раз)
AlekseyK
Гость
« : Март 16, 2016, 17:12 »

Пытался найти хороший пример или полноценный код для виджета похожего на Widget Box в Qt Designer (creator), но который бы содержал не список заготовок внутри, а QWidget или QFrame. Т.е. он должен работать как QToolBox или QTabWidget и уметь разворачиваться-сворачиваться, чтобы была возможность видеть сразу несколько страниц (виджетов), а не одну как предоставляют QToolBox, QTabWidget или QStackedWidget. В исходниках Qt есть класс WidgetBoxTreeWidget для Qt Designer, но он очень сложный и содержит множество ненужных мне вещей и функциональности.


Нашёл только простейшую реализацию подобного, и тогда решил написать свою реализацию с использованием QTreeWidget. Был создан простой виджет и расширение для Qt Designer, поместил его на GitHub, если он понадобится ещё кому-нибудь или кто-то захочет его улучшить: https://github.com/akontsevich/WidgetBox. Виджет полностью готов к использованию, однако некоторые моменты хотелось бы улучшить:

  • Стиль кнопки (панели) категории хотелось бы стилизовать под аналогичную в Qt Creator (Designer), или сделать по примеру панели свойств в LibreOffice Writer.
  • Улучшить поведение страниц во время проектирования в Qt Designer по типу QToolBox: сейчас Qt Designer по какой-то причине не меняет свойство currentPageIndex PROPERTY и фокус на страницу, если нажимаешь на неё или соответствующую категорию, хотя все сигналы привязаны
  • Улучшить геометрию страниц и изменение размера во время проектирования и во время исполнения: QTreeWidget автоматически увеличивает высоту itemWidget (во время исполнения, не во время проектирования - оно выглядит ужасно на данный момент), если содержимое больше, чем размер виджета (страницы), однако, если размер страницы (sizeHint) больше содержимого - он не уменьшается до необходимого минимума

Надеюсь на помощь или советы сообщества по этим улучшениям.

Примеры скриншотов виджета на данный момент времени:
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #1 : Март 17, 2016, 01:11 »

http://qt-apps.org/content/show.php/QSint+Widgets+Collection?content=162296

QSint::ActionPanel и другие Улыбающийся
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
AlekseyK
Гость
« Ответ #2 : Март 17, 2016, 01:42 »

Ну и где ты раньше был?! Улыбающийся Спасибо, посмотрим. Надо было сначала сюда вопрос поместить, а не на stackoverflow. Улыбающийся И плугины для Qt Designer есть! А оно ещё развивается? Исходники есть только на qt-apps.org или есть хранилище какое-то?
« Последнее редактирование: Март 17, 2016, 01:56 от AlekseyK » Записан
AlekseyK
Гость
« Ответ #3 : Март 17, 2016, 02:38 »

Видимо давно не развивается, ещё для Qt4 сделано: плугин для Qt Designer собрался, но не установился автоматом, а когда доставил его ручками, не подхватился Qt Designer.

Но в общем идея понятна, спасибо: я немного усложнил и создал себе проблемы: лучше сделать категорию (expandable) с одной страницей и набрать таких виджетов (категория+страница) столько, сколько нужно, например соединив через QVBoxLayout.

Ещё вопрос тут: если надо на этом виджете разметить другие, как Qt Designer (Creator) поймут, на каком виджете категория или страница размещать дочерние виджеты? С QDesignerContainerExtension это понятно - там напрямую виджет указывается (см. мои исходники), а как здесь? В ActionPanel Example - задаётся вручную, а как об этом сказать Qt Designer?
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #4 : Март 18, 2016, 02:51 »

А там по моему в дизайнере оно вообще не работало... так что приходилось все ручками цеплять.
Но проект точно развивается, хотя и не спеша.
В FreeCad эту штуку везде юзают Улыбающийся
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
AlekseyK
Гость
« Ответ #5 : Март 21, 2016, 16:33 »

Ручками не подходит, не только мне его использовать. А где оно развивается, репозиторий есть?
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #6 : Март 21, 2016, 18:05 »

https://sourceforge.net/p/qsint/code/HEAD/tree/
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
AlekseyK
Гость
« Ответ #7 : Март 21, 2016, 18:15 »

Ладно, спасибо, посмотрим, может допилят до вменяемого состояния, может даже поучаствуем в доработке плагинов. Пока буду свой использовать виджет, нужно только сделать доделать автоматическое изменение размеров виджетов (itemWidget): для top level работает автоматом, для child item нужно почему-то ручками делать.
Записан
AlekseyK
Гость
« Ответ #8 : Апрель 21, 2016, 22:13 »

Допилил свой виджет до вполне вменяемого состояния, думаю можно пользоваться. В Qt Designer-e работает отлично, кое какие вещи конечно будем ещё улучшать. Cкачать можно отсюда: https://github.com/akontsevich/WidgetBox
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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