Spec-Zone.ru › Qt 5.12

Класс QGraphicsAnchorLayout

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

Заголовок: #include <QGraphicsAnchorLayout>
qmake: QT += widgets
С: Qt 4.6
Наследует: 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
  • 10 открытых функций, унаследованных от QGraphicsLayout
  • 35 открытых функций, унаследованных от QGraphicsLayoutItem

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

virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const override
  • 1 защищённая функция, унаследованная от QGraphicsLayout
  • 3 защищённые функции, унаследованные от QGraphicsLayoutItem

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

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

Макет привязки позволяет разработчикам указать, как виджеты должны быть размещены относительно друг друга и самого макета. Указание выполняется путём добавления привязок к макету с помощью вызова 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().

qreal QGraphicsAnchorLayout::horizontalSpacing() const

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

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

[override virtual] void QGraphicsAnchorLayout::invalidate()

Переопределено из QGraphicsLayout::invalidate().

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

Переопределено из QGraphicsLayout::itemAt().

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

Переопределено из QGraphicsLayout::removeAt().

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

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

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

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

Переопределено из QGraphicsLayoutItem::setGeometry().

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().

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

Spec-Zone.ru

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