Russian Qt Forum

Qt => Кладовая готовых решений => Тема начата: AlekseyK от Март 16, 2016, 17:12



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

(http://i.stack.imgur.com/HgSGe.png)

Нашёл только простейшую реализацию  (http://www.fancyaddress.com/blog/qt-2/create-something-like-the-widget-box-as-in-the-qt-designer/) подобного, и тогда решил написать свою реализацию с использованием QTreeWidget. Был создан простой виджет и расширение для Qt Designer, поместил его на GitHub, если он понадобится ещё кому-нибудь или кто-то захочет его улучшить: https://github.com/akontsevich/WidgetBox. Виджет полностью готов к использованию, однако некоторые моменты хотелось бы улучшить:

  • Стиль кнопки (панели) категории хотелось бы стилизовать под аналогичную в Qt Creator (Designer), или сделать по примеру панели свойств (https://github.com/akontsevich/WidgetBox/blob/master/Screenshots/LibreOffice%20Writer%20Properties.png?raw=true) в LibreOffice Writer.
  • Улучшить поведение страниц во время проектирования в Qt Designer по типу QToolBox: сейчас Qt Designer по какой-то причине не меняет свойство currentPageIndex PROPERTY и фокус на страницу, если нажимаешь на неё или соответствующую категорию, хотя все сигналы привязаны
  • Улучшить геометрию страниц и изменение размера во время проектирования и во время исполнения: QTreeWidget автоматически увеличивает высоту itemWidget (во время исполнения, не во время проектирования - оно выглядит ужасно на данный момент), если содержимое больше, чем размер виджета (страницы), однако, если размер страницы (sizeHint) больше содержимого - он не уменьшается до необходимого минимума

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

Примеры скриншотов виджета на данный момент времени:
(http://i.stack.imgur.com/WXXbS.png) (http://i.stack.imgur.com/7S6dp.png)


Название: Re: WidgetBox аля Qt Designer (creator)
Отправлено: Racheengel от Март 17, 2016, 01:11
http://qt-apps.org/content/show.php/QSint+Widgets+Collection?content=162296

QSint::ActionPanel и другие :)


Название: Re: WidgetBox аля Qt Designer (creator)
Отправлено: AlekseyK от Март 17, 2016, 01:42
http://qt-apps.org/content/show.php/QSint+Widgets+Collection?content=162296

QSint::ActionPanel и другие :)
Ну и где ты раньше был?! :) Спасибо, посмотрим. Надо было сначала сюда вопрос поместить, а не на stackoverflow. :) И плугины для Qt Designer есть! А оно ещё развивается? Исходники есть только на qt-apps.org или есть хранилище какое-то?


Название: Re: WidgetBox аля Qt Designer (creator)
Отправлено: AlekseyK от Март 17, 2016, 02:38
Видимо давно не развивается, ещё для Qt4 сделано: плугин для Qt Designer собрался, но не установился автоматом, а когда доставил его ручками, не подхватился Qt Designer.

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

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


Название: Re: WidgetBox аля Qt Designer (creator)
Отправлено: Racheengel от Март 18, 2016, 02:51
А там по моему в дизайнере оно вообще не работало... так что приходилось все ручками цеплять.
Но проект точно развивается, хотя и не спеша.
В FreeCad эту штуку везде юзают :)


Название: Re: WidgetBox аля Qt Designer (creator)
Отправлено: AlekseyK от Март 21, 2016, 16:33
Ручками не подходит, не только мне его использовать. А где оно развивается, репозиторий есть?


Название: Re: WidgetBox аля Qt Designer (creator)
Отправлено: Racheengel от Март 21, 2016, 18:05
https://sourceforge.net/p/qsint/code/HEAD/tree/


Название: Re: WidgetBox аля Qt Designer (creator)
Отправлено: AlekseyK от Март 21, 2016, 18:15
Ладно, спасибо, посмотрим, может допилят до вменяемого состояния, может даже поучаствуем в доработке плагинов. Пока буду свой использовать виджет, нужно только сделать доделать автоматическое изменение размеров виджетов (itemWidget): для top level работает автоматом, для child item нужно почему-то ручками делать.


Название: Re: WidgetBox аля Qt Designer (creator)
Отправлено: AlekseyK от Апрель 21, 2016, 22:13
Допилил свой виджет до вполне вменяемого состояния, думаю можно пользоваться. В Qt Designer-e работает отлично, кое какие вещи конечно будем ещё улучшать. Cкачать можно отсюда: https://github.com/akontsevich/WidgetBox