Адаптивный макет в Qt

На форме есть два verticalLayout и один horizontalLayout, нужно сделать их адаптивными к размеру окна, то есть при изменении его размеров данные элементы должны пропорционально расширяться или сужаться до определённых значений. Пробовал поместить все эти виджеты в gridLayout, но размеры не изменялись. Возможно ли реализовать такую адаптивность в Qt Designer? Или необходимо делать это программно?


Ответы (2 шт):

Автор решения: jNX

Для того что бы добиться такого эффекта необходимо дописать 3 строчки кода. Первое что вам необходимо сделать это создать VboxLayout в окне mainwindow в дизайнере и растянуть его побольше для удобства. Далее устанавливаете этот Layout как центр widget. Для этого в конструкторе mainwindow добавляете следующее:

QWidget *widget = new QWidget();
widget->setLayout(ui->verticalLayout);//verticalLayout имя переменной в ui форме
setCentralWidget(widget);

После этого в этот Layout накидываете вертикальный и горизонтальный Layout, после чего уже наполняете сами Layout.

→ Ссылка
Автор решения: Alexander Chernin

Режим дизайнера:

введите сюда описание изображения

Выбираете необходимый виджет и лейаут:

введите сюда описание изображения

Результат:

введите сюда описание изображения

→ Ссылка