Класс QGraphicsLayoutItem
Класс QGraphicsLayoutItem может быть унаследован, чтобы позволить вашим пользовательским элементам управляться макетами. Подробнее...
| Заголовок: | #include <QGraphicsLayoutItem> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Наследуется: |
Открытые функции
| QGraphicsLayoutItem(QGraphicsLayoutItem *parent = nullptr, bool isLayout = false) | |
| virtual | ~QGraphicsLayoutItem() |
| QRectF | contentsRect() const |
| QSizeF | effectiveSizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const |
| QRectF | geometry() const |
| virtual void | getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const |
| QGraphicsItem * | graphicsItem() const |
| virtual bool | isEmpty() const |
| bool | isLayout() const |
| qreal | maximumHeight() const |
| QSizeF | maximumSize() const |
| qreal | maximumWidth() const |
| qreal | minimumHeight() const |
| QSizeF | minimumSize() const |
| qreal | minimumWidth() const |
| bool | ownedByLayout() const |
| QGraphicsLayoutItem * | parentLayoutItem() const |
| qreal | preferredHeight() const |
| QSizeF | preferredSize() const |
| qreal | preferredWidth() const |
| virtual void | setGeometry(const QRectF &rect) |
| void | setMaximumHeight(qreal height) |
| void | setMaximumSize(const QSizeF &size) |
| void | setMaximumSize(qreal w, qreal h) |
| void | setMaximumWidth(qreal width) |
| void | setMinimumHeight(qreal height) |
| void | setMinimumSize(const QSizeF &size) |
| void | setMinimumSize(qreal w, qreal h) |
| void | setMinimumWidth(qreal width) |
| void | setParentLayoutItem(QGraphicsLayoutItem *parent) |
| void | setPreferredHeight(qreal height) |
| void | setPreferredSize(const QSizeF &size) |
| void | setPreferredSize(qreal w, qreal h) |
| void | setPreferredWidth(qreal width) |
| void | setSizePolicy(const QSizePolicy &policy) |
| void | setSizePolicy(QSizePolicy::Policy hPolicy, QSizePolicy::Policy vPolicy, QSizePolicy::ControlType controlType = QSizePolicy::DefaultType) |
| QSizePolicy | sizePolicy() const |
| virtual void | updateGeometry() |
Защищённые функции
| void | setGraphicsItem(QGraphicsItem *item) |
| void | setOwnedByLayout(bool ownership) |
| virtual QSizeF | sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const = 0 |
Подробное описание
QGraphicsLayoutItem — это абстрактный класс, который определяет набор виртуальных функций, описывающих размеры, политику размеров и подсказки размеров для любого объекта, упорядоченного с помощью QGraphicsLayout. API содержит функции, относящиеся как к самому элементу, так и к пользователю элемента, поскольку большинство функций QGraphicsLayoutItem также являются частью открытого API подкласса.
В большинстве случаев существующие классы, поддерживающие макеты, такие как QGraphicsWidget и QGraphicsLayout, уже предоставляют необходимую функциональность. Однако, создание подклассов этих классов позволит вам создавать как графические элементы, которые хорошо работают с макетами (QGraphicsWidget), так и пользовательские макеты (QGraphicsLayout).
Создание подкласса QGraphicsLayoutItem
Если вы создадите подкласс QGraphicsLayoutItem и переопределите его виртуальные функции, вы позволите макету изменять размер и позиционировать ваш элемент вместе с другими QGraphicsLayoutItems, включая QGraphicsWidget и QGraphicsLayout.
Вы можете начать с переопределения важных функций: защищенной функции sizeHint(), а также открытой функции setGeometry(). Если вы хотите, чтобы ваши элементы были осведомлены о немедленных изменениях геометрии, вы также можете переопределить updateGeometry().
Геометрия, подсказка размера и политика размера влияют на размер и положение элемента. Вызов setGeometry() всегда будет немедленно изменять размер и позиционировать элемент. Обычно эта функция вызывается QGraphicsLayout после активации макета, но она также может вызываться пользователем элемента в любое время.
Функция sizeHint() возвращает минимальные, предпочтительные и максимальные размеры элемента. Вы можете переопределить эти свойства, вызвав setMinimumSize(), setPreferredSize() или setMaximumSize(). Также можно использовать функции, такие как setMinimumWidth() или setMaximumHeight(), чтобы установить только ширину или высоту, если необходимо.
Функция effectiveSizeHint() возвращает размер для заданного Qt::SizeHint и гарантирует, что возвращаемый размер ограничен минимальными и максимальными размерами и подсказками размера. Вы можете установить политику вертикального и горизонтального размера элемента, вызвав setSizePolicy(). Свойство sizePolicy используется системой макета для описания того, как этот элемент предпочитает расти или уменьшаться.
Вложенность QGraphicsLayoutItems
QGraphicsLayoutItems могут быть вложены в другие QGraphicsLayoutItems, подобно макетам, которые могут содержать вложенные макеты. Это делается либо путём передачи указателя на QGraphicsLayoutItem в защищённый конструктор QGraphicsLayoutItem, либо путём вызова setParentLayoutItem(). Функция parentLayoutItem() возвращает указатель на родительский элемент макета. Если родитель элемента nullptr или если родитель не наследуется от QGraphicsItem, функция parentLayoutItem() возвращает nullptr. isLayout() возвращает true, если подкласс QGraphicsLayoutItem сам является макетом, в противном случае возвращает false.
Qt использует QGraphicsLayoutItem для предоставления функциональности макета в Graphics View Framework, но в будущем его использование может распространиться на сам Qt.
См. также QGraphicsWidget, QGraphicsLayout, QGraphicsLinearLayout и QGraphicsGridLayout.
Документация по членам-функциям
QGraphicsLayoutItem::QGraphicsLayoutItem(QGraphicsLayoutItem *parent = nullptr, bool isLayout = false)
Создаёт объект QGraphicsLayoutItem. parent становится родителем объекта. Если isLayout равно true, элемент является макетом, в противном случае isLayout равно false.
[virtual] QGraphicsLayoutItem::~QGraphicsLayoutItem()
Уничтожает объект QGraphicsLayoutItem.
QRectF QGraphicsLayoutItem::contentsRect() const
Возвращает прямоугольник содержимого в локальных координатах.
Прямоугольник содержимого определяет подпрямоугольник, используемый связанным макетом при упорядочивании дочерних элементов. Эта функция является удобной функцией, которая корректирует geometry() элемента на его отступы содержимого. Обратите внимание, что getContentsMargins() — это виртуальная функция, которую вы можете переопределить, чтобы вернуть отступы содержимого элемента.
См. также getContentsMargins() и geometry().
QSizeF QGraphicsLayoutItem::effectiveSizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const
Возвращает эффективный размер для этого QGraphicsLayoutItem.
which — это размер, о котором идёт речь. constraint — это необязательный аргумент, определяющий специальное ограничение при расчёте эффективного размера. По умолчанию constraint — QSizeF(-1, -1), что означает отсутствие ограничения размера.
Если вы хотите указать размер элемента для заданной ширины или высоты, вы можете указать фиксированное значение в constraint. Это полезно для элементов, которые могут расти только вертикально или горизонтально и нуждаются в установлении ширины или высоты в специальное значение.
Например, элемент абзаца текста, помещённый в колонку шириной 200, может расти по вертикали. Вы можете передать QSizeF(200, -1) в качестве ограничения, чтобы получить подходящую минимальную, предпочтительную и максимальную высоту.
Вы можете настроить эффективный размер, переопределив sizeHint() в подклассе QGraphicsLayoutItem или вызвав одну из следующих функций: setMinimumSize(), setPreferredSize или setMaximumSize (или комбинацию обоих).
Эта функция кэширует каждый из размеров и гарантирует, что sizeHint() будет вызвана только один раз для каждого значения which, если только constraint не указано и не вызывалась updateGeometry().
См. также sizeHint().
QRectF QGraphicsLayoutItem::geometry() const
Возвращает геометрию элемента (например, положение и размер) в виде QRectF. Эта функция эквивалентна QRectF(pos(), size()).
См. также setGeometry().
[virtual] void QGraphicsLayoutItem::getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const
Эта виртуальная функция предоставляет отступы содержимого left, top, right и bottom для этого QGraphicsLayoutItem. По умолчанию все отступы содержимого равны 0. Параметры указывают на значения, хранящиеся в qreals. Если какой-либо из указателей nullptr, это значение не будет обновлено.
См. также QGraphicsWidget::setContentsMargins().
QGraphicsItem *QGraphicsLayoutItem::graphicsItem() const
Возвращает QGraphicsItem, который представляет этот элемент макета. Для QGraphicsWidget он вернёт себя. Для пользовательских элементов он может возвращать агрегированное значение.
См. также setGraphicsItem().
[virtual, since 6.0] bool QGraphicsLayoutItem::isEmpty() const
Возвращает true, если этот элемент пуст, т.е. не содержит содержимого и не должен занимать никакого места.
По умолчанию возвращает true true, если элемент скрыт, если только его политика размера size policy не имеет retainSizeWhenHidden, установленного в true
Эта функция была добавлена в Qt 6.0.
См. также sizePolicy().
bool QGraphicsLayoutItem::isLayout() const
Возвращает true, если этот QGraphicsLayoutItem является макетом (например, наследуется от объекта, который располагает другие объекты QGraphicsLayoutItem); в противном случае возвращает false.
См. также QGraphicsLayout.
qreal QGraphicsLayoutItem::maximumHeight() const
Возвращает максимальную высоту.
См. также setMaximumHeight(), setMaximumSize() и maximumSize().
QSizeF QGraphicsLayoutItem::maximumSize() const
Возвращает максимальный размер.
См. также setMaximumSize(), minimumSize(), preferredSize(), Qt::MaximumSize и sizeHint().
qreal QGraphicsLayoutItem::maximumWidth() const
Возвращает максимальную ширину.
См. также setMaximumWidth(), setMaximumSize() и maximumSize().
qreal QGraphicsLayoutItem::minimumHeight() const
Возвращает минимальную высоту.
См. также setMinimumHeight(), setMinimumSize() и minimumSize().
QSizeF QGraphicsLayoutItem::minimumSize() const
Возвращает минимальный размер.
См. также setMinimumSize(), preferredSize(), maximumSize(), Qt::MinimumSize и sizeHint().
qreal QGraphicsLayoutItem::minimumWidth() const
Возвращает минимальную ширину.
См. также setMinimumWidth(), setMinimumSize() и minimumSize().
bool QGraphicsLayoutItem::ownedByLayout() const
Возвращает, должно ли макету удалять этот элемент в своём деструкторе. Если true, макет удалит его. Если false, предполагается, что за этим элементом закреплено другое объект, и макет не будет его удалять.
Если элемент наследует как QGraphicsItem, так и QGraphicsLayoutItem (как, например, QGraphicsWidget), то элемент фактически принадлежит двум иерархиям владения. Данное свойство указывает, что макет должен делать со своими дочерними элементами при удалении. В случае QGraphicsWidget предпочтительно, чтобы при удалении макета его дочерние элементы не удалялись (поскольку они также являются частью иерархии графических элементов).
По умолчанию это значение инициализируется в false в QGraphicsLayoutItem, но оно переопределяется QGraphicsLayout на true. Это связано с тем, что QGraphicsLayout обычно не является частью иерархии QGraphicsItem, поэтому родительский макет должен его удалить. Подклассы могут переопределить это поведение по умолчанию, вызвав setOwnedByLayout(true).
См. также setOwnedByLayout().
QGraphicsLayoutItem *QGraphicsLayoutItem::parentLayoutItem() const
Возвращает родительский элемент QGraphicsLayoutItem или nullptr, если родительского элемента нет или он не наследует от QGraphicsLayoutItem (QGraphicsLayoutItem часто используется через множественное наследование с классами, производными от QObject).
См. также setParentLayoutItem().
qreal QGraphicsLayoutItem::preferredHeight() const
Возвращает предпочтительную высоту.
См. также setPreferredHeight(), setPreferredSize(), и preferredSize().
QSizeF QGraphicsLayoutItem::preferredSize() const
Возвращает предпочтительный размер.
См. также setPreferredSize(), minimumSize(), maximumSize(), Qt::PreferredSize и sizeHint().
qreal QGraphicsLayoutItem::preferredWidth() const
Возвращает предпочтительную ширину.
См. также setPreferredWidth(), setPreferredSize(), и preferredSize().
[virtual] void QGraphicsLayoutItem::setGeometry(const QRectF &rect)
Этот виртуальный метод устанавливает геометрию QGraphicsLayoutItem на rect, которая находится в координатах родителя (например, верхний левый угол rect эквивалентен позиции элемента в координатах родителя).
Вы должны переопределить этот метод в подклассе QGraphicsLayoutItem, чтобы получать обновления геометрии. Макет вызовет этот метод при переупорядочении.
Если rect выходит за пределы границ minimumSize и maximumSize, она будет скорректирована до ближайшего размера, чтобы находиться в пределах допустимых границ.
См. также geometry().
[protected] void QGraphicsLayoutItem::setGraphicsItem(QGraphicsItem *item)
Если QGraphicsLayoutItem представляет собой QGraphicsItem и хочет воспользоваться возможностями автоматической перестановки родителя QGraphicsLayout, он должен установить это значение. Обратите внимание, что если вы удаляете item, а не элемент макета, вы несете ответственность за вызов setGraphicsItem(nullptr) для предотвращения появления висящей ссылки.
См. также graphicsItem().
void QGraphicsLayoutItem::setMaximumHeight(qreal height)
Устанавливает максимальную высоту на height.
См. также maximumHeight(), setMaximumSize(), и maximumSize().
void QGraphicsLayoutItem::setMaximumSize(const QSizeF &size)
Устанавливает максимальный размер на size. Это свойство переопределяет sizeHint() для Qt::MaximumSize и гарантирует, что effectiveSizeHint() никогда не вернёт размер, больший, чем size. Для отмены максимального размера используйте недействительный размер.
См. также maximumSize(), minimumSize(), preferredSize(), Qt::MaximumSize и sizeHint().
void QGraphicsLayoutItem::setMaximumSize(qreal w, qreal h)
Этот вспомогательный метод эквивалентен вызову setMaximumSize(QSizeF(w, h)).
См. также maximumSize(), setMinimumSize(), setPreferredSize() и sizeHint().
void QGraphicsLayoutItem::setMaximumWidth(qreal width)
Устанавливает максимальную ширину на width.
См. также maximumWidth(), setMaximumSize(), и maximumSize().
void QGraphicsLayoutItem::setMinimumHeight(qreal height)
Устанавливает минимальную высоту на height.
См. также minimumHeight(), setMinimumSize(), и minimumSize().
void QGraphicsLayoutItem::setMinimumSize(const QSizeF &size)
Устанавливает минимальный размер на size. Это свойство переопределяет sizeHint() для Qt::MinimumSize и гарантирует, что effectiveSizeHint() никогда не вернёт размер, меньший, чем size. Для отмены минимального размера используйте недействительный размер.
См. также minimumSize(), maximumSize(), preferredSize(), Qt::MinimumSize, sizeHint(), setMinimumWidth() и setMinimumHeight().
void QGraphicsLayoutItem::setMinimumSize(qreal w, qreal h)
Этот вспомогательный метод эквивалентен вызову setMinimumSize(QSizeF(w, h)).
См. также minimumSize(), setMaximumSize(), setPreferredSize(), и sizeHint().
void QGraphicsLayoutItem::setMinimumWidth(qreal width)
Устанавливает минимальную ширину на width.
См. также minimumWidth(), setMinimumSize(), и minimumSize().
[protected] void QGraphicsLayoutItem::setOwnedByLayout(bool ownership)
Устанавливает, должно ли макету удалять этот элемент в своём деструкторе. ownership должно быть true, чтобы макет удалил его.
См. также ownedByLayout().
void QGraphicsLayoutItem::setParentLayoutItem(QGraphicsLayoutItem *parent)
Устанавливает родителя этого QGraphicsLayoutItem на parent.
См. также parentLayoutItem().
void QGraphicsLayoutItem::setPreferredHeight(qreal height)
Устанавливает предпочтительную высоту на height.
См. также preferredHeight(), preferredWidth(), setPreferredSize(), и preferredSize().
void QGraphicsLayoutItem::setPreferredSize(const QSizeF &size)
Устанавливает предпочтительный размер на size. Это свойство переопределяет sizeHint() для Qt::PreferredSize и предоставляет значение по умолчанию для effectiveSizeHint(). Чтобы сбросить предпочтительный размер, используйте недействительный размер.
См. также preferredSize(), minimumSize(), maximumSize(), Qt::PreferredSize, и sizeHint().
void QGraphicsLayoutItem::setPreferredSize(qreal w, qreal h)
Эта вспомогательная функция эквивалентна вызову setPreferredSize(QSizeF(w, h)).
См. также preferredSize(), setMaximumSize(), setMinimumSize(), и sizeHint().
void QGraphicsLayoutItem::setPreferredWidth(qreal width)
Устанавливает предпочтительную ширину на width.
См. также preferredWidth(), preferredHeight(), setPreferredSize(), и preferredSize().
void QGraphicsLayoutItem::setSizePolicy(const QSizePolicy &policy)
Устанавливает политику размера на policy. Политика размера описывает, как элемент должен расти по горизонтали и вертикали при расположении в макете.
QGraphicsLayoutItem's политика размера по умолчанию — (QSizePolicy::Fixed, QSizePolicy::Fixed, QSizePolicy::DefaultType), но подклассы часто её изменяют. Например, QGraphicsWidget использует по умолчанию (QSizePolicy::Preferred, QSizePolicy::Preferred, QSizePolicy::DefaultType).
См. также sizePolicy() и QWidget::sizePolicy().
void QGraphicsLayoutItem::setSizePolicy(QSizePolicy::Policy hPolicy, QSizePolicy::Policy vPolicy, QSizePolicy::ControlType controlType = QSizePolicy::DefaultType)
Это перегруженная функция.
Эта функция эквивалентна вызову setSizePolicy(QSizePolicy(hPolicy, vPolicy, controlType)).
См. также sizePolicy() и QWidget::sizePolicy().
QSizeF QGraphicsLayoutItem::sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const
Эта чисто виртуальная функция возвращает подсказку размера для which из QGraphicsLayoutItem, используя ширину или высоту constraint для ограничения результата.
Переопределите эту функцию в подклассе QGraphicsLayoutItem, чтобы предоставить необходимые подсказки размера для ваших элементов.
См. также effectiveSizeHint().
QSizePolicy QGraphicsLayoutItem::sizePolicy() const
Возвращает текущую политику размера.
См. также setSizePolicy() и QWidget::sizePolicy().
void QGraphicsLayoutItem::updateGeometry()
Эта виртуальная функция отбрасывает любые кэшированные данные о подсказках размера. Вы всегда должны вызывать эту функцию, если изменяете возвращаемое значение функции sizeHint(). Подклассы должны всегда вызывать базовый реализацию при переопределении этой функции.
См. также effectiveSizeHint().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qgraphicslayoutitem.html