Класс QGraphicsLayoutItem
Класс QGraphicsLayoutItem может быть унаследован, чтобы позволить вашим пользовательским элементам управляться макетами. Подробнее...
| Заголовок: | #include <QGraphicsLayoutItem> |
| qmake: | QT += widgets |
| С версии: | Qt 4.4 |
| Наследуется: |
Этот класс был представлен в 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
Возвращает прямоугольник содержимого в локальных координатах.
Прямоугольник содержимого определяет подпрямоугольник, используемый связанным макетом при упорядочивании дочерних элементов. Эта функция является удобной функцией, которая корректирует геометрию элемента с помощью отступов содержимого. Обратите внимание, что 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().
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'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-5.15/qgraphicslayoutitem.html