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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Фиксированный размер QDialog  (Прочитано 6182 раз)
andrew.k
Гость
« : Ноябрь 14, 2010, 21:48 »

Как сделать QDialog неизменяемого размера?
Делаю сайзполиси Fixed по высоте и ширине и по-прежнему могу менять размер.
Если делать SetFixedSize, то я получаю диалог строго фиксированного размера в пикселах. Это не совсем то, так как шрифт используемый в диалоге может меняться, соответственно, став крупнее он не поместится в текущие рамки заданные в пикселах.
Как быть?
« Последнее редактирование: Ноябрь 14, 2010, 21:53 от andrew.k » Записан
cya-st
Гость
« Ответ #1 : Ноябрь 14, 2010, 22:12 »

Вызывай динамически setFixedHeight и setFixedWidth в зависимости от размера шрифта, других вариантов я думаю что нет.
Записан
andrew.k
Гость
« Ответ #2 : Ноябрь 14, 2010, 22:55 »

в таком случае мне нужно будет определять суммарный размер всех контроллов, которые лежат в диалоге, с учетом их расположения в лэйаутах. А это не тривиально.
Записан
kirill
Гость
« Ответ #3 : Ноябрь 15, 2010, 08:13 »

на диалоге есть layout?
Если есть то layout->setSizeConstraint(QLayout::SetFixedSize)

Изменять не даст, но и сожмет лэйаут до минимума
поэтому может стоит задать setMinimumWidth()
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #4 : Ноябрь 15, 2010, 09:07 »

Цитировать
в таком случае мне нужно будет определять суммарный размер всех контроллов, которые лежат в диалоге, с учетом их расположения в лэйаутах. А это не тривиально.
Всё довольно-таки тривиально.
Перед QDialog::show() вызываешь QDialog::adjustSize(), после чего получаешь размер окна диалога и уже полученным размером фиксируешь окно.
PS. Иногда перед adjustSize() может потребоваться вызвать QApplication::processEvents().
Записан

Qt 5.11/4.8.7 (X11/Win)
andrew.k
Гость
« Ответ #5 : Ноябрь 15, 2010, 17:58 »

надо попробовать.
Нашел такой флаг QMSWindowFixedDialogSizeHint он используется у QMessageBox как дефолтное значение виджет флагов.
И сам диалог действительно не тянется.
Почему может не работать у меня?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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