Использование макетов в Qt Designer
Перед использованием формы, объекты на форме необходимо поместить в макеты. Это гарантирует, что объекты будут отображаться должным образом при предварительном просмотре формы или ее использовании в приложении. Размещение объектов в макете также гарантирует, что они будут правильно изменять размер при изменении размера формы.
После того, как виджеты были вставлены в макет, их нельзя перемещать и изменять размер индивидуально, поскольку сам макет управляет геометрией каждого виджета внутри него, учитывая подсказки, предоставляемые разделителями. Разделители могут быть добавлены в макет для влияния на геометрию виджетов.
Макеты могут быть вложены, образуя иерархию. Например, для достижения типичного макета диалогового окна с горизонтальной строкой кнопок элементы диалогового окна могут быть расположены с помощью вертикального макета с горизонтальным макетом, содержащим кнопки внизу. Для ознакомления с системой макетов Qt обратитесь к Управлению макетами.
Чтобы разорвать макет, нажмите Ctrl+0 или выберите Разрыв макета из контекстного меню формы, меню Форма или основной панели инструментов.
Установка верхнего уровня макета
Верхний уровень макета формы можно установить, очистив выделение (нажав левой кнопкой мыши на самой форме) и применив макет. Верхний уровень макета необходим для обеспечения правильного изменения размера ваших виджетов при изменении размера его окна. Чтобы проверить, установили ли вы макет верхнего уровня, предварительно просмотрите свой виджет и попробуйте изменить размер окна, перетащив маркер изменения размера.
|
Применение макета Чтобы применить макет, вы можете выбрать нужный макет из панели инструментов слева или из контекстного меню, показанного ниже. |
Аналогичным образом, макеты верхнего уровня устанавливаются на контейнерных виджетах (QGroupBox) или на страницах страниц контейнерных виджетов (QTabWidget, QToolBox и QStackedWidget) соответственно. Для успешного выполнения этого действия необходимо выбрать контейнерный виджет.
Макеты верхнего уровня не отображаются как отдельные объекты в инспекторе объектов. Их свойства отображаются под свойствами виджета основной формы, контейнерного виджета или страницы контейнерного виджета в редакторе свойств.
Объекты макета
Объекты макета создаются путем применения макета к группе существующих объектов. Это достигается путем выбора объектов, которые необходимо управлять, и применения одного из стандартных макетов с помощью основной панели инструментов, меню Форма или контекстного меню формы.
Объект макета обозначается красной рамкой на форме и отображается как объект в инспекторе объектов. Его свойства (отступы и ограничения) отображаются в редакторе свойств.
Объект макета можно выбрать и поместить в другой макет вместе с другими виджетами и объектами макета для построения иерархии макета.
При выборе дочернего объекта макета, его родительский объект макета можно выбрать, нажав клавишу Shift при нажатии на него. Это позволяет выбрать определенный макет в иерархии, что в противном случае сложно сделать из-за небольшой рамки.
Вставка объектов в макет
Объекты можно вставить в существующий макет, перетащив их из текущих позиций и отпустив их в нужном месте. Синий курсор отображается в макете во время перетаскивания объекта, чтобы указать, куда будет добавлен объект.
Вставка объектов в макет
Типы макетов
Горизонтальные и вертикальные (блочные) макеты
Самый простой способ расположить объекты на форме — разместить их в горизонтальном или вертикальном макете. Горизонтальные макеты гарантируют, что виджеты внутри выстроены по горизонтали; вертикальные макеты гарантируют, что они выстроены по вертикали.
Горизонтальные и вертикальные макеты могут быть объединены и вложены на любую глубину. Однако, если вам нужен больший контроль над размещением объектов, рассмотрите использование сетчатого макета.
Сетка макета
Сложные макеты формы могут быть созданы путем размещения объектов в сетчатом макете. Этот тип макета предоставляет разработчику формы гораздо больше свободы в размещении виджетов на форме, но может привести к менее гибкому макету. Однако, для некоторых типов макетов формы сетчатое расположение более подходит, чем вложенное расположение горизонтальных и вертикальных макетов.
Макет формы
Класс QFormLayout управляет виджетами в двухстолбцовой форме; левый столбец содержит метки, а правый столбец содержит поля виджетов, такие как поля ввода, спин-боксы и т. д. Класс QFormLayout соответствует различным рекомендациям по отображению платформ и поддерживает перенос для длинных строк.
Файл пользовательского интерфейса выше приводит к предварительным просмотрам, показанным ниже.
| Windows XP | macOS | Cleanlooks |
|---|---|---|
Макеты разделителей
Еще один распространенный способ управления расположением объектов на форме — разместить их в разделителе. Эти разделители организуют объекты по горизонтали или вертикали так же, как и обычные макеты, но также позволяют пользователю изменять количество места, выделенное для каждого объекта.
Хотя QSplitter является контейнерным виджетом, Qt Designer обрабатывает объекты разделителей как макеты, применяемые к существующим виджетам. Чтобы поместить группу виджетов в разделитель, выберите их как описано здесь, затем примените макет разделителя, используя соответствующую кнопку панели инструментов, сочетание клавиш или пункт контекстного меню Разместить.
Сочетания клавиш
В дополнение к стандартным пунктам панели инструментов и контекстного меню также есть набор сочетаний клавиш для применения макетов к виджетам.
| Макет | Сочетание клавиш | Описание |
|---|---|---|
| Горизонтальный | Ctrl+1 | Размещает выбранные объекты в горизонтальном макете. |
| Вертикальный | Ctrl+2 | Размещает выбранные объекты в вертикальном макете. |
| Сетка | Ctrl+5 | Размещает выбранные объекты в сетчатом макете. |
| Форма | Ctrl+6 | Размещает выбранные объекты в макете формы. |
| Горизонтальный разделитель | Ctrl+3 | Создает горизонтальный разделитель и помещает выбранные объекты внутрь него. |
| Вертикальный разделитель | Ctrl+4 | Создает вертикальный разделитель и помещает выбранные объекты внутрь него. |
| Настройка размера | Ctrl+J | Настраивает размер макета, чтобы гарантировать, что каждый дочерний объект имеет достаточно места для отображения своего содержимого. См. QWidget::adjustSize() для получения дополнительной информации. |
Примечание: Ctrl+0 используется для разрыва макета.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/designer-layouts.html