Russian Qt Forum
Ноябрь 23, 2024, 01:14
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Кладовая готовых решений
(Модератор:
Пантер
) >
WidgetBox аля Qt Designer (creator)
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: WidgetBox аля Qt Designer (creator) (Прочитано 11880 раз)
AlekseyK
Гость
WidgetBox аля Qt Designer (creator)
«
:
Март 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
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: WidgetBox аля Qt Designer (creator)
«
Ответ #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
Гость
Re: WidgetBox аля Qt Designer (creator)
«
Ответ #2 :
Март 17, 2016, 01:42 »
Цитата: Racheengel от Март 17, 2016, 01:11
http://qt-apps.org/content/show.php/QSint+Widgets+Collection?content=162296
QSint::ActionPanel и другие
Ну и где ты раньше был?!
Спасибо, посмотрим. Надо было сначала сюда вопрос поместить, а не на stackoverflow.
И плугины для Qt Designer есть! А оно ещё развивается? Исходники есть только на qt-apps.org или есть хранилище какое-то?
«
Последнее редактирование: Март 17, 2016, 01:56 от AlekseyK
»
Записан
AlekseyK
Гость
Re: WidgetBox аля Qt Designer (creator)
«
Ответ #3 :
Март 17, 2016, 02:38 »
Видимо давно не развивается, ещё для Qt4 сделано: плугин для Qt Designer собрался, но не установился автоматом, а когда доставил его ручками, не подхватился Qt Designer.
Но в общем идея понятна, спасибо: я немного усложнил и создал себе проблемы: лучше сделать категорию (expandable) с одной страницей и набрать таких виджетов (категория+страница) столько, сколько нужно, например соединив через QVBoxLayout.
Ещё вопрос тут: если надо на этом виджете разметить другие, как Qt Designer (Creator) поймут, на каком виджете категория или страница размещать дочерние виджеты? С QDesignerContainerExtension это понятно - там напрямую виджет указывается (см. мои исходники), а как здесь? В ActionPanel Example - задаётся вручную, а как об этом сказать Qt Designer?
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: WidgetBox аля Qt Designer (creator)
«
Ответ #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
Гость
Re: WidgetBox аля Qt Designer (creator)
«
Ответ #5 :
Март 21, 2016, 16:33 »
Ручками не подходит, не только мне его использовать. А где оно развивается, репозиторий есть?
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: WidgetBox аля Qt Designer (creator)
«
Ответ #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
Гость
Re: WidgetBox аля Qt Designer (creator)
«
Ответ #7 :
Март 21, 2016, 18:15 »
Ладно, спасибо, посмотрим, может допилят до вменяемого состояния, может даже поучаствуем в доработке плагинов. Пока буду свой использовать виджет, нужно только сделать доделать автоматическое изменение размеров виджетов (itemWidget): для top level работает автоматом, для child item нужно почему-то ручками делать.
Записан
AlekseyK
Гость
Re: WidgetBox аля Qt Designer (creator)
«
Ответ #8 :
Апрель 21, 2016, 22:13 »
Допилил свой виджет до вполне вменяемого состояния, думаю можно пользоваться. В Qt Designer-e работает отлично, кое какие вещи конечно будем ещё улучшать. Cкачать можно отсюда:
https://github.com/akontsevich/WidgetBox
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...