Spec-Zone.ru › Qt 5.15

Класс QGraphicsAnchorLayout

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

Заголовок: #include <QGraphicsAnchorLayout>
qmake: QT += widgets
С момента: Qt 4.6
Наследует: QGraphicsLayout

Этот класс был представлен в Qt 4.6.

  • Список всех членов, включая наследуемые

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

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-5.15/qgraphicsanchorlayout.html

Spec-Zone.ru

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