Spec-Zone.ru › Qt

Класс QGraphicsAnchorLayout

Класс QGraphicsAnchorLayout предоставляет макет, позволяющий привязывать виджеты друг к другу в представлении Graphics View. Подробнее...

Заголовок: #include <QGraphicsAnchorLayout>
CMake: find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Наследует: QGraphicsLayout
  • Список всех членов, включая унаследованные

Открытые функции

QGraphicsAnchorLayout(QGraphicsLayoutItem *parent = nullptr)
virtual ~QGraphicsAnchorLayout()
QGraphicsAnchor * addAnchor(QGraphicsLayoutItem *firstItem, Qt::AnchorPoint firstEdge, QGraphicsLayoutItem *secondItem, Qt::AnchorPoint secondEdge)
void addAnchors(QGraphicsLayoutItem *firstItem, QGraphicsLayoutItem *secondItem, Qt::Orientations orientations = Qt::Horizontal | Qt::Vertical)
void addCornerAnchors(QGraphicsLayoutItem *firstItem, Qt::Corner firstCorner, QGraphicsLayoutItem *secondItem, Qt::Corner secondCorner)
QGraphicsAnchor * anchor(QGraphicsLayoutItem *firstItem, Qt::AnchorPoint firstEdge, QGraphicsLayoutItem *secondItem, Qt::AnchorPoint secondEdge)
qreal horizontalSpacing() const
void setHorizontalSpacing(qreal spacing)
void setSpacing(qreal spacing)
void setVerticalSpacing(qreal spacing)
qreal verticalSpacing() const

Переопределённые открытые функции

virtual int count() const override
virtual void invalidate() override
virtual QGraphicsLayoutItem * itemAt(int index) const override
virtual void removeAt(int index) override
virtual void setGeometry(const QRectF &geom) override

Переопределённые защищённые функции

virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const override

Подробное описание

Макет привязки позволяет разработчикам указать, как виджеты должны быть размещены относительно друг друга и самого макета. Указание производится путём добавления привязок к макету, вызывая addAnchor(), addAnchors() или addCornerAnchors().

Существующие привязки в макете можно получить с помощью функции anchor(). Виджеты, которые привязаны, автоматически добавляются в макет, а если виджеты удаляются, все их привязки будут автоматически удалены.

Using an anchor layout to align simple colored widgets.

Привязки всегда устанавливаются между краями элемента, где «центр» также считается краем. Рассмотрим следующий пример:

layout->addAnchor(b, Qt::AnchorLeft, a, Qt::AnchorRight);
layout->addAnchor(b, Qt::AnchorTop, a, Qt::AnchorBottom);

Здесь правый край элемента a привязан к левому краю элемента b, а нижний край элемента a привязан к верхнему краю элемента b, в результате чего элемент b будет размещён диагонально справа и ниже элемента b.

Функция addCornerAnchors() предоставляет более простой способ привязки углов двух виджетов, чем два отдельных вызова addAnchor(), показанные в коде выше. Здесь показано, как виджет можно привязать к верхнему левому углу окружающего макета:

layout->addCornerAnchors(a, Qt::TopLeftCorner, layout, Qt::TopLeftCorner);

В тех случаях, когда привязки используются для соответствия ширины или высоты виджетов, удобно использовать функцию addAnchors(). Как и в других функциях для задания привязок, её также можно использовать для привязки виджета к макету.

Подсказки размера и политики размера в макете привязок

QGraphicsAnchorLayout учитывает подсказки размера и политики размера каждого элемента. Обратите внимание, что некоторые свойства QSizePolicy не учитываются.

Интервал в макете привязок

Макет может распределять некоторое пространство между элементами. Если интервал не указан явно, фактическая величина обычно будет равна 0.

Однако, если первый край является противоположным второму краю (например, правый край первого виджета привязан к левому краю второго виджета), размер привязки будет запрошен из стиля с помощью метрики пикселей: PM_LayoutHorizontalSpacing для горизонтальных привязок и PM_LayoutVerticalSpacing для вертикальных привязок.

Если интервал отрицательный, элементы будут частично перекрываться.

Известные проблемы

Есть некоторые функции, которые QGraphicsAnchorLayout в настоящее время не поддерживает. Это может измениться в будущем, поэтому избегайте использования этих функций, если вы хотите избежать каких-либо будущих регрессий в поведении:

  • Факторы растяжения не учитываются.
  • QSizePolicy::ExpandFlag не учитывается.
  • Высота по ширине не учитывается.

См. также QGraphicsLinearLayout, QGraphicsGridLayout и QGraphicsLayout.

Документация по функциям-членам

QGraphicsAnchorLayout::QGraphicsAnchorLayout(QGraphicsLayoutItem *parent = nullptr)

Конструирует экземпляр QGraphicsAnchorLayout. parent передаётся конструктору QGraphicsLayout.

[virtual] QGraphicsAnchorLayout::~QGraphicsAnchorLayout()

Удаляет объект QGraphicsAnchorLayout.

QGraphicsAnchor *QGraphicsAnchorLayout::addAnchor(QGraphicsLayoutItem *firstItem, Qt::AnchorPoint firstEdge, QGraphicsLayoutItem *secondItem, Qt::AnchorPoint secondEdge)

Создаёт привязку между краем firstEdge элемента firstItem и краем secondEdge элемента secondItem. Интервал привязки берётся из стиля. Привязки между краем макета и краем элемента будут иметь размер 0. Если между краями уже существует привязка, новая привязка заменит старую.

firstItem и secondItem автоматически добавляются в макет, если они не являются частью макета. Это означает, что count() может увеличиться на 2.

Интервал, который получит привязка, зависит от типа привязки. Например, привязки от правого края одного элемента к левому краю другого (или наоборот) будут использовать стандартный горизонтальный интервал. То же самое поведение применяется к привязкам «снизу» к «верху» (но они будут использовать стандартный вертикальный интервал). Для всех остальных комбинаций привязок интервал будет равен 0. Все функции привязки будут следовать этому правилу.

Интервал также можно установить вручную, используя метод QGraphicsAnchor::setSpacing().

Вызов этой функции, где firstItem или secondItem являются предками макета, имеет неопределённое поведение.

См. также addAnchors() и addCornerAnchors().

void QGraphicsAnchorLayout::addAnchors(QGraphicsLayoutItem *firstItem, QGraphicsLayoutItem *secondItem, Qt::Orientations orientations = Qt::Horizontal | Qt::Vertical)

Привязывает два или четыре края firstItem к соответствующим краям secondItem, так что firstItem имеет такой же размер, как secondItem, в измерениях, указанных orientations.

Например, следующий пример привязывает левые и правые края двух элементов для соответствия их ширине:

layout->addAnchor(b, Qt::AnchorLeft, c, Qt::AnchorLeft);
layout->addAnchor(b, Qt::AnchorRight, c, Qt::AnchorRight);

Это также можно сделать с помощью следующей строки кода:

layout->addAnchors(b, c, Qt::Horizontal);

См. также addAnchor() и addCornerAnchors().

void QGraphicsAnchorLayout::addCornerAnchors(QGraphicsLayoutItem *firstItem, Qt::Corner firstCorner, QGraphicsLayoutItem *secondItem, Qt::Corner secondCorner)

Создаёт две привязки между firstItem и secondItem, заданные углами firstCorner и secondCorner, где одна предназначена для горизонтального края, а другая — для вертикального.

Это вспомогательная функция, так как привязку углов можно выразить как привязку двух краёв. Например:

layout->addAnchor(a, Qt::AnchorTop, layout, Qt::AnchorTop);
layout->addAnchor(a, Qt::AnchorLeft, layout, Qt::AnchorLeft);

Это также можно сделать с помощью следующей строки кода:

layout->addCornerAnchors(a, Qt::TopLeftCorner, layout, Qt::TopLeftCorner);

Если между парами краёв уже существует привязка, она будет заменена привязками, указанными этой функцией.

firstItem и secondItem автоматически добавляются в макет, если они не являются частью макета. Это означает, что count() может увеличиться максимум на 2.

См. также addAnchor() и addAnchors().

QGraphicsAnchor *QGraphicsAnchorLayout::anchor(QGraphicsLayoutItem *firstItem, Qt::AnchorPoint firstEdge, QGraphicsLayoutItem *secondItem, Qt::AnchorPoint secondEdge)

Возвращает привязку между точками привязки, определёнными firstItem и firstEdge и secondItem и secondEdge. Если такой привязки нет, функция возвращает 0.

[override virtual] int QGraphicsAnchorLayout::count() const

Реализует: QGraphicsLayout::count() const.

qreal QGraphicsAnchorLayout::horizontalSpacing() const

Возвращает значение отступа по горизонтали по умолчанию для макета привязки.

См. также verticalSpacing() и setHorizontalSpacing().

[override virtual] void QGraphicsAnchorLayout::invalidate()

Реализует: QGraphicsLayout::invalidate().

[override virtual] QGraphicsLayoutItem *QGraphicsAnchorLayout::itemAt(int index) const

Реализует: QGraphicsLayout::itemAt(int i) const.

[override virtual] void QGraphicsAnchorLayout::removeAt(int index)

Реализует: QGraphicsLayout::removeAt(int index).

Удаляет элемент макета по индексу index без его уничтожения. Владение элементом передаётся вызывающему методу.

Удаление элемента также удалит все связанные с ним привязки.

См. также itemAt() и count().

[override virtual] void QGraphicsAnchorLayout::setGeometry(const QRectF &geom)

Реализует: QGraphicsLayoutItem::setGeometry(const QRectF &rect).

void QGraphicsAnchorLayout::setHorizontalSpacing(qreal spacing)

Устанавливает значение отступа по горизонтали по умолчанию для макета привязки в spacing.

См. также horizontalSpacing(), setVerticalSpacing() и setSpacing().

void QGraphicsAnchorLayout::setSpacing(qreal spacing)

Устанавливает значения отступа по горизонтали и по вертикали по умолчанию для макета привязки в spacing.

Если элемент привязан без отступа, связанного с привязкой, будет использоваться значение отступа по умолчанию.

QGraphicsAnchorLayout не поддерживает отрицательные значения отступов. Установка отрицательного значения сбросит предыдущий отступ и позволит макету использовать отступ, заданный текущей стилизованной виджетом.

См. также setHorizontalSpacing() и setVerticalSpacing().

void QGraphicsAnchorLayout::setVerticalSpacing(qreal spacing)

Устанавливает значение отступа по вертикали по умолчанию для макета привязки в spacing.

См. также verticalSpacing(), setHorizontalSpacing() и setSpacing().

[override virtual protected] QSizeF QGraphicsAnchorLayout::sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const

Реализует: QGraphicsLayoutItem::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const.

qreal QGraphicsAnchorLayout::verticalSpacing() const

Возвращает значение отступа по вертикали по умолчанию для макета привязки.

См. также horizontalSpacing() и setVerticalSpacing().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qgraphicsanchorlayout.html

Spec-Zone.ru

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