Изменение размера QDialog во время выполнения
У меня есть подкласс QDialog, содержащий некоторые параметры моего приложения. Некоторые из опций являются основными, другие - расширенными, поэтому я решил поместить их в отдельный проверяемый QGroupBox.
Я хочу, чтобы диалоговое окно уменьшалось по вертикали, когда пользователь установил флажок расширенных параметров, но я не могу найти способ сделать это правильно - размер диалога остается неизменным
Я установил политику размера диалога на Расширение, попытался вызвать adjustSize()
и попытался позвонить resize()
метод - ничего не помогает Я не могу программно изменить размер диалогового окна, чтобы оно было меньше текущего размера (оно может только увеличиваться). В то же время, можно изменить размер вручную.
Кто-нибудь может мне помочь?
2 ответа
Если вам не нужно ручное изменение размера, вы можете добавить
layout()->setSizeConstraint(QLayout::SetFixedSize);
для конструктора диалогов, макет берет на себя ответственность за автоматическое изменение размера при отображении или скрытии виджетов.
Я пробовал использовать метод, описанный Златомиром, но он вызывает некоторые неожиданные побочные эффекты. На скриншотах ниже показано поведение QDialog при отсутствии
Исходный вид диалогового окна
Вид диалога после изменений
А потом, когда
layout()->setSizeConstraint(QLayout::SetFixedSize);
активен
а также
Поскольку ширина последнего столбца в QTableWidget определяется программно при запуске QDialog, опция QLayout::SetFixedSize также приводит к тому, что диалоговое окно становится шире, чем то, что можно увидеть на следующих двух снимках экрана:
Есть ли другой вариант изменения размера QDialog в соответствии с шириной и высотой виджетов в макете QDialog. Просто для справки я использую QGridLayout с каждым столбцом одинакового размера.