Автоматически расширяемый макет с Qt-Designer


217

Я использую Qt Designer.

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

Расположение QVBoxLayoutостается фиксированным.

Как я могу заставить QVBoxLayoutрасширяться и заполнять все окно через дизайнер?


Если вы просто хотите использовать макет в Qt Designer, пожалуйста,

Ответы:


366

После создания вашего QVBoxLayoutв Qt Designer, щелкните правой кнопкой мыши на фоне вашего виджета / диалогового окна / окна (не QVBoxLayoutна родительском виджете, а на родительском виджете) и выберите Layout -> Layout in the Grid в нижней части контекстного меню. Теперь он QVBoxLayoutдолжен растягиваться, чтобы соответствовать окну, и будет изменяться автоматически при изменении размера всего окна.


6
Спасибо, я тоже искал решение этой проблемы.
Саймон Х.

35
На самом деле вам вообще не нужно создавать макет Grid. Вместо того, чтобы создавать QVBoxLayout самостоятельно, отмените выбор всех элементов и нажмите на фон виджета. Затем выберите Layout -> Lay Out Vertical.
Михал Котман

3
@Michal Kottman: Это работает только во время разработки. Это не изменит макет, когда пользователь изменяет размер окна во время выполнения.
Джей

5
Как сетка, так и вертикальная компоновка работают для меня во время проектирования и выполнения.
AndiDog

2
Я хотел бы добавить немного подробностей: если вы хотите добавить саморастягивающийся макет на страницу QTabWidget , вы на самом деле не можете щелкнуть правой кнопкой мыши на фоне страницы, как если бы вы выбрали QTabWidget, а не соответствующую вкладку. Вы должны щелкнуть правой кнопкой мыши на ярлыке вкладки, как показано в окне дизайнера, и затем выбрать Layout -> Layout
Emanuele Cipolla

15

Согласно документации , должен быть набор макетов верхнего уровня.

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

Вы можете установить его, сняв выделение и щелкнув правой кнопкой мыши на самой форме и выбрав один из макетов, доступных в контекстном меню.

Раскладки Qt


2

Я пытался найти свойство «подходит для экрана», но такого нет.

Но установка для «MaximumSize» виджета «некоторого большого числа» (например, 2000 x 2000) автоматически поместит виджет в пространство родительского виджета.


6
Что происходит с этой техникой на MacBook Pro с дисплеем Retina (2880x1800)?
ta.speot.is

1
Просто установите для него максимальное число, которое он будет принимать (что, как показывает мне дизайнер, это 16777215), и оно должно работать на любом размере монитора.
andreb

0

Как только вы добавите свой макет с хотя бы одним виджетом, выберите ваше окно и нажмите кнопку «Обновить» в QtDesigner. Размер интерфейса будет изменен до максимально оптимизированного размера, и ваш макет будет соответствовать всему окну. Затем при изменении размера окна, размер будет изменен таким же образом.


Я имею в виду, что когда пользователь изменяет размеры всего окна, вертикальный макет (и, следовательно, его содержимое) растягивается, чтобы соответствовать ему. Мне все равно, как это выглядит в Qt Designer.
Элазар Лейбович

-7

Установите для HorizontalPolicy & VerticalPolicy для элементов управления / виджетов значение «Предпочитаемый» .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.