Как заставить виджет Qt расти с размером окна?


Я хочу иметь небольшой QFormLayout который растет, чтобы заполнить его Родительский виджет.

Я создал новый .интерфейс С помощью QWidget шаблон в Qt Designer. Я поставил QFormLayout внутри этого "окна", а затем положить некоторые элементы управления внутри этого QFormLayout.

все работает достаточно хорошо, но QFormLayout всегда остается в размере, который я установил в Qt Designer. Я бы хотел QFormLayout чтобы заполнить его Родительский виджет и расти / сжиматься с ним.

как я могу этого достичь это?

3 76

3 ответа:

в конструкторе активируйте centralWidget и назначьте макет, например, горизонтальный или вертикальный макет. Тогда ваш QFormLayout будет автоматически изменять размер.

Image of Designer

всегда убедитесь, что все виджеты есть макет! В противном случае, автоматическое изменение размера сломается с этим виджетом!

см. также

элементы управления настаивают на слишком большом размере и не изменяют размер в QtDesigner

Я обнаружил, что невозможно назначить макет для centralwidget, пока я не добавлю по крайней мере одного ребенка под ним. Затем я мог бы выделить крошечный значок с красной меткой "отключено", а затем нажать на макет на панели инструментов дизайнера вверху.

принятый ответ (его изображение) неверен, по крайней мере сейчас в QT5. Вместо этого вы должны назначить макет корневому объекту / виджету (указывая на вышеупомянутое изображение, оно должно быть MainWindow вместо centralWidget). Также обратите внимание, что у вас должен быть хотя бы один QObject создан под ним для этого, чтобы работать. Сделайте это, и ваш пользовательский интерфейс будет реагировать на изменение размеров окна.