Автоматично розширюється макет за допомогою Qt-Designer


217

Я використовую конструктор Qt.

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

Схема QVBoxLayoutостанків виправлена.

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


Якщо ви просто хочете Uset макет в Qt Designer, будь ласка , реф ревіти поради: stackoverflow.com/questions/1508939/qt-layout-on-qmainwindow

Відповіді:


366

Створивши свій QVBoxLayoutдизайн у Qt Designer, клацніть правою кнопкою миші на тлі вашого віджета / діалогового вікна / не вікна QVBoxLayout, а батьківського віджета та виберіть Lay Out -> Lay Out в сітці внизу контекстного меню. Тепер QVBoxLayoutслід розтягнутись, щоб відповідати вікну, і він автоматично змінить розмір, коли змінити розмір всього вікна.


6
Дякую, я також шукав рішення цієї проблеми.
Саймон Х.

35
Насправді вам взагалі не потрібно створювати макет Grid. Замість того, щоб створювати QVBoxLayout самостійно, зніміть позначку з усіх елементів та натисніть на тлі віджета. Потім виберіть Lay Out -> Lay Out вертикально.
Міхал Котман

3
@Michal Kottman: Це працює лише в час проектування. Він не змінить макет, коли користувач змінить розмір вікна під час виконання.
Jay

5
І сітка, і вертикальний макет працюють для мене під час проектування та виконання.
AndiDog

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

15

Згідно з документацією , повинен бути встановлений макет верхнього рівня.

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

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

Qt макетів


2

Я намагався знайти властивість "підходити до екрана", але такого немає.

Але встановлення віджета "максимальний розмір" на "деяке велике число" (наприклад, 2000 x 2000) автоматично прилаштовує віджет до батьківського простору віджетів.


6
Що відбувається з цією технікою на MacBook Pro з дисплеєм Retina (2880x1800)?
ta.speot.is

1
Просто встановіть його на максимальну кількість, яку він прийме (що мені показує дизайнер - 16777215), і він повинен працювати на будь-якому розмірі монітора.
andreb

0

Після того, як ви додасте свій макет із хоча б одним віджетом у ньому, виберіть своє вікно та натисніть кнопку "Оновити" QtDesigner. Інтерфейс буде змінено на максимально оптимізований розмір, а ваш макет помістить усе вікно. Тоді, змінюючи розмір вікна, розмір буде змінено таким же чином.


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

-7

Встановіть для елементів управління / віджетів параметр horizontalPolicy & VerticalPolicy на "Preferred" .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.