Spec-Zone.ru › Qt 6.1

Использование макетов в 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-6.1/designer-layouts.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API