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

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

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

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

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

3 ответов


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

Image of Designer

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

см. также

контроль настаивать на слишком большой и не изменить, в QtDesigner


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


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