Класс QGraphicsAnchorLayout
Класс QGraphicsAnchorLayout предоставляет макет, где можно привязывать виджеты друг к другу в представлении графики. Подробнее...
| Заголовок: | #include <QGraphicsAnchorLayout> |
| qmake: | QT += widgets |
| С тех пор: | Qt 4.6 |
| Наследует: | QGraphicsLayout |
Открытые функции
| QGraphicsAnchorLayout(QGraphicsLayoutItem *parent = Q_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 |
| virtual void | invalidate() |
| virtual QGraphicsLayoutItem * | itemAt(int index) const |
| virtual void | removeAt(int index) |
| virtual void | setGeometry(const QRectF &geom) |
- 10 открытых функций, унаследованных от QGraphicsLayout
- 35 открытых функций, унаследованных от QGraphicsLayoutItem
Реализованные защищённые функции
| virtual QSizeF | sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const |
- 1 защищённая функция, унаследованная от QGraphicsLayout
- 3 защищённые функции, унаследованные от QGraphicsLayoutItem
Подробное описание
Класс QGraphicsAnchorLayout предоставляет макет, где можно привязывать виджеты друг к другу в представлении графики.
Макет привязок позволяет разработчикам указывать, как виджеты должны быть размещены относительно друг друга и самого макета. Указание делается путем добавления привязок к макету с помощью вызова addAnchor(), addAnchors() или addCornerAnchors().
Существующие привязки в макете можно получить с помощью функции anchor(). Элементы, к которым привязаны привязки, автоматически добавляются в макет, и если элементы удаляются, все их привязки будут автоматически удалены.
Привязки всегда устанавливаются между краями элемента, где «центр» также считается краем. Рассмотрим следующий пример:
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 = Q_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.
[virtual] int QGraphicsAnchorLayout::count() const
Переопределено из QGraphicsLayout::count().
qreal QGraphicsAnchorLayout::horizontalSpacing() const
Возвращает значение по умолчанию для горизонтального отступа в макете привязки.
См. также verticalSpacing() и setHorizontalSpacing().
[virtual] void QGraphicsAnchorLayout::invalidate()
Переопределено из QGraphicsLayout::invalidate().
[virtual] QGraphicsLayoutItem *QGraphicsAnchorLayout::itemAt(int index) const
Переопределено из QGraphicsLayout::itemAt().
[virtual] void QGraphicsAnchorLayout::removeAt(int index)
Переопределено из QGraphicsLayout::removeAt().
Удаляет элемент макета по индексу index, не уничтожая его. Владение элементом передаётся вызывающему объекту.
Удаление элемента также удалит любые связанные с ним привязки.
[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().
[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/archives/qt-5.6/qgraphicsanchorlayout.html