Как сделать так, чтобы Qt Widget рос с размером окна? - PullRequest
79 голосов
/ 18 мая 2011

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

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

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

Как мне это сделать?

Ответы [ 3 ]

113 голосов
/ 18 мая 2011

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

Image of Designer

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

См. Также

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

41 голосов
/ 11 января 2013

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

2 голосов
/ 10 августа 2018

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

...