Класс QGraphicsLayoutItem
Класс QGraphicsLayoutItem может быть унаследован, чтобы позволить вашим пользовательским элементам управляться макетами. Подробнее...
| Header: | #include <QGraphicsLayoutItem> |
| qmake: | QT += widgets |
| Since: | Qt 4.4 |
| Inherited By: |
Этот класс был введен в Qt 4.4.
Открытые функции
| 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 |
| 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. Параметры указывают на значения, хранящиеся в qreal. Если какой-либо из указателей равен nullptr, это значение не будет обновлено.
См. также QGraphicsWidget::setContentsMargins().
QGraphicsItem *QGraphicsLayoutItem::graphicsItem() const
Возвращает QGraphicsItem, представляемый этим элементом макета. Для QGraphicsWidget он вернет себя. Для пользовательских элементов он может возвращать агрегированное значение.
См. также setGraphicsItem().
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).
Эта функция была добавлена в Qt 4.6.
См. также 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, чтобы макет удалял его.
Эта функция была добавлена в Qt 4.6.
См. также 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 по умолчанию имеет политику размера (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-5.13/qgraphicslayoutitem.html