Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: juvf от Март 15, 2015, 06:40



Название: QDockWidget дефолтовая группировка
Отправлено: juvf от Март 15, 2015, 06:40
Создаю несколько QDockWidget. Все QDockWidget потом пользователь растащит как ему удобно. Это положение запомниается в сеттингах. Но при первом запуске программы, по дефолту доквиджеты расположены один рядом с другим. Как сделать так, чтобы 3 виджета были размещены внизу друг друга перекрывая?


Название: Re: QDockWidget дефолтовая группировка
Отправлено: __Heaven__ от Март 15, 2015, 13:19
Я так не пробовал, но предполагаю, что из сеттингов можно дернуть mainWindowState и применить как дефолтный


Название: Re: QDockWidget дефолтовая группировка
Отправлено: __Heaven__ от Март 15, 2015, 13:20
В смысле вшить в код


Название: Re: QDockWidget дефолтовая группировка
Отправлено: __Heaven__ от Март 15, 2015, 13:38
Залез в асистент:
Код
C++ (Qt)
void QMainWindow::tabifyDockWidget(QDockWidget * first, QDockWidget * second)
Посмотрите, возможно, это то, что вам надо


Название: Re: QDockWidget дефолтовая группировка
Отправлено: juvf от Март 15, 2015, 19:16
Залез в асистент:
Код
C++ (Qt)
void QMainWindow::tabifyDockWidget(QDockWidget * first, QDockWidget * second)
Посмотрите, возможно, это то, что вам надо
Ну начиналось с этого, с этим можно виджеты выстроить в табы. Но потом аппетиты выросли. Нужно вообще все доквиджеты расставить для дефолта, а также тулбары.

Цитировать
Я так не пробовал, но предполагаю, что из сеттингов можно дернуть mainWindowState и применить как дефолтный
Так и сделал. Не костыль, а какойто финт ушами. Расставил виджеты, при сохранении сетинги вывел как массив в консоль, от туда скопипастил в код. Сработало.

Спасибо.

ps Печально что нет нормального годного способа задавать сетинги по дефолту.


Название: Re: QDockWidget дефолтовая группировка
Отправлено: __Heaven__ от Март 15, 2015, 20:35
А как насчёт dockWidgetArea? Поищите описания в ассистенте. Нормальный способ есть.
По крайней мере, в дизайнере можно расположить все доки и тулы снизу.


Название: Re: QDockWidget дефолтовая группировка
Отправлено: kai666_73 от Март 16, 2015, 22:25
Набросал простенький тестовый пример, думаю, вполне сгодится в качестве отправной точки )


Название: Re: QDockWidget дефолтовая группировка
Отправлено: Fregloin от Март 17, 2015, 11:07
я расположение виджетов сохранял через saveGeometry/restoreGeometry


Название: Re: QDockWidget дефолтовая группировка
Отправлено: __Heaven__ от Март 17, 2015, 11:14
я расположение виджетов сохранял через saveGeometry/restoreGeometry
Код
C++ (Qt)
QByteArray QMainWindow::​saveState(int version = 0) const
Цитировать
Saves the current state of this mainwindow's toolbars and dockwidgets.


Название: Re: QDockWidget дефолтовая группировка
Отправлено: Fregloin от Март 18, 2015, 11:10
да точно  ::), геометрию я сохранял для отдельных диалогов.


Название: Re: QDockWidget дефолтовая группировка
Отправлено: juvf от Март 18, 2015, 18:25
Набросал простенький тестовый пример, думаю, вполне сгодится в качестве отправной точки )
Отличный пример, спасибо! Я в дезайнере поигрался и понял ну и понял, что подобное в динамике сделать можно..... Только я не понял как размеры задавать у доквиджетов? На вашей картинке левые виджеты равны по высоте.
1)Как сделать верхний воджет 50% от высоты, а два нижних по 25%?
2) как определить ширину левых виджетов и высоту нижнего?


Название: Re: QDockWidget дефолтовая группировка
Отправлено: kai666_73 от Март 18, 2015, 22:29
Набросал простенький тестовый пример, думаю, вполне сгодится в качестве отправной точки )
Отличный пример, спасибо! Я в дезайнере поигрался и понял ну и понял, что подобное в динамике сделать можно..... Только я не понял как размеры задавать у доквиджетов? На вашей картинке левые виджеты равны по высоте.
1)Как сделать верхний воджет 50% от высоты, а два нижних по 25%?
2) как определить ширину левых виджетов и высоту нижнего?
Мне достаточно было обеспечить более менее адекватное размещение доков при первом запуске приложения. При этом кол-во доков не определено заранее (добавляются плагинами). Что касается ваших вопросов, если уж такая функциональность непременно должна быть реализована, то возможно, поможет переопределение sizeHint/minimumSizeHint для виджета доквиджета.


Название: Re: QDockWidget дефолтовая группировка
Отправлено: __Heaven__ от Март 19, 2015, 09:27
А setGeometry не помогает?