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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QDockWidget дефолтовая группировка  (Прочитано 5915 раз)
juvf
Программист
*****
Offline Offline

Сообщений: 564


Просмотр профиля
« : Март 15, 2015, 06:40 »

Создаю несколько QDockWidget. Все QDockWidget потом пользователь растащит как ему удобно. Это положение запомниается в сеттингах. Но при первом запуске программы, по дефолту доквиджеты расположены один рядом с другим. Как сделать так, чтобы 3 виджета были размещены внизу друг друга перекрывая?
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #1 : Март 15, 2015, 13:19 »

Я так не пробовал, но предполагаю, что из сеттингов можно дернуть mainWindowState и применить как дефолтный
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #2 : Март 15, 2015, 13:20 »

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

Сообщений: 2130



Просмотр профиля
« Ответ #3 : Март 15, 2015, 13:38 »

Залез в асистент:
Код
C++ (Qt)
void QMainWindow::tabifyDockWidget(QDockWidget * first, QDockWidget * second)
Посмотрите, возможно, это то, что вам надо
Записан
juvf
Программист
*****
Offline Offline

Сообщений: 564


Просмотр профиля
« Ответ #4 : Март 15, 2015, 19:16 »

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

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

Спасибо.

ps Печально что нет нормального годного способа задавать сетинги по дефолту.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #5 : Март 15, 2015, 20:35 »

А как насчёт dockWidgetArea? Поищите описания в ассистенте. Нормальный способ есть.
По крайней мере, в дизайнере можно расположить все доки и тулы снизу.
Записан
kai666_73
Крякер
****
Offline Offline

Сообщений: 319


Просмотр профиля
« Ответ #6 : Март 16, 2015, 22:25 »

Набросал простенький тестовый пример, думаю, вполне сгодится в качестве отправной точки )
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #7 : Март 17, 2015, 11:07 »

я расположение виджетов сохранял через saveGeometry/restoreGeometry
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #8 : Март 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.
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #9 : Март 18, 2015, 11:10 »

да точно  Строит глазки, геометрию я сохранял для отдельных диалогов.
Записан
juvf
Программист
*****
Offline Offline

Сообщений: 564


Просмотр профиля
« Ответ #10 : Март 18, 2015, 18:25 »

Набросал простенький тестовый пример, думаю, вполне сгодится в качестве отправной точки )
Отличный пример, спасибо! Я в дезайнере поигрался и понял ну и понял, что подобное в динамике сделать можно..... Только я не понял как размеры задавать у доквиджетов? На вашей картинке левые виджеты равны по высоте.
1)Как сделать верхний воджет 50% от высоты, а два нижних по 25%?
2) как определить ширину левых виджетов и высоту нижнего?
Записан
kai666_73
Крякер
****
Offline Offline

Сообщений: 319


Просмотр профиля
« Ответ #11 : Март 18, 2015, 22:29 »

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

Сообщений: 2130



Просмотр профиля
« Ответ #12 : Март 19, 2015, 09:27 »

А setGeometry не помогает?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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