![]() |
|
|
![]()
|
|
| OlegIT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 684 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
Создал форму диалог, связываю его с QDockWidget функцией setCentralWidget(Wd);. Диалог отображается, но его размер остаётся фиксированным, какие бы флаги в sizePolicy я не ставил. Как сделать, что бы размер диалога и все элементы в этом диалоге были «привязаны» к размеру главного окна?
QDockWidget мне не очень подходит, дочерние окна на нём жёстко «привязаны» флагами к определённому месту, у меня получилось «привязаться» максимум к левой и верхней границам. Как сделать, что бы эти дочерние окна можно было перемещать как в MS Visual Studio с инструментом управления размещения как на прикреплённом рисунке и сохранять эту конфигурацию при следующих запусках? Как я понимаю должно прийти сообщение, что позиция дочернего окна изменилась, и она стала такой-то. Это сообщение отредактировал(а) OlegIT - 21.6.2013, 12:58 Присоединённый файл ( Кол-во скачиваний: 4 )
EC.PNG 6,61 Kb |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Делай форму унаследованную от QWidget. Её можно в зависимости от надобностей поместить в QDialog или в QDockWidget.
|
|||
|
||||
| OlegIT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 684 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
||||
|
||||
| Guinness |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 21.6.2009 Где: Зеленоград Репутация: 2 Всего: 10 |
||||
|
||||
| OlegIT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 684 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
||||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Не совсем так. Потребуются ещё изменения. Лучше при создании формы указать базовым классом QWidget.
Получите кроме файла формы form.ui ещё form.cpp и form.h, ui_form.h, где объявлены классы Ui::Form и Form : public QWidget. Добавьте классы FormDialog : public QDialog и FormDock : public QDockWidget, в конструкторе которых создаётся виджет Form вставляется в диалог или доквиджет центральным виджетом. Возможны варианты. |
|||
|
||||
| OlegIT |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 684 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
Получил диалог-форму от QWidget.
Соединяю QDockWidget с CentralDialog
Но, опять же размеры CentralDialog не меняются. Что-то я не доделываю. Не понял откуда берутся «FormDialog : public QDialog и FormDock : public QDockWidget» FormDialog это мой CentralDialog, а FormDock это тот объект из которого setCentralWidget вызывается? |
||||
|
|||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Для CentralDialog задай minimumWidth и minimumHeight - тогда размер QDockWidget будет не меньше этих размеров.
Производные классы от QDockWidget и QDialog можно не создавать - это только вопрос удобства. Можно так:
|
|||
|
||||
| OlegIT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 684 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
Сам диалог "следит" за размерами QDockWidget. Но теперь не получается заставить следить за размерами диалога элементы управления в этом диалоге. У меня сейчас там два элемента QTableView и QTreeView. Использовал QBoxLayout, результат не изменился.
Ещё нужно центрировать QLabel относительно диалога. Это сообщение отредактировал(а) OlegIT - 26.6.2013, 14:19 |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Кликни в дизайнере на свободное место в виджете. Выбери соответствующий лейаут в панели инструментов. Размеры таблицы и дерева увеличится до размеров виджета с учётом марджинов - если они слишком большие, их можно уменьшить. При изменении размеров виджета размеры таблицы и дерева будут изменяться соответственно. При необходимости для них тоже нужно задать минимальные размеры.
Добавлено через 2 минуты и 6 секунд Метка сама умеет выравниваться по центру - задай соответствующий alignment. |
|||
|
||||
| OlegIT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 684 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
Размеры таблицы и дерева включённые в лайаут "следят" за размерами этого лайаута, а размеры лайаута остаются постоянными.
|
|||
|
||||
| OlegIT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 684 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
Решил задачу так
А без кода обойтись не получится? Внутренних средств виджета, лайаута для таких действий нет? |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Если хоть раз установлен фиксированный размер - то да, его нужно будет изменять вручную.
У горизонтального лейаута можно настроить размеры полей, промежутков между виджетами и веса виджетов. Если размеры виджетов изменялись вручную с помощью мышки, их можно запомнить в конфигурации программы. |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |