Класс QQuickItem
Класс QQuickItem предоставляет самые базовые визуальные элементы в Qt Quick. Подробнее...
| Заголовок: | #include <QQuickItem> |
| qmake: | QT += quick |
| Инициализируется из: | Item |
| Наследует: | QObject и QQmlParserStatus |
| Наследуется: |
Типы
| ДанныеИзмененияЭлемента | |
| Перечисление | Флаг { ItemClipsChildrenToShape, ItemAcceptsInputMethod, ItemIsFocusScope, ItemHasContents, ItemAcceptsDrops } |
| Флаги | Флаги |
| Перечисление | ИзменениеЭлемента { ItemChildAddedChange, ItemChildRemovedChange, ItemSceneChange, ItemVisibleHasChanged, ..., ItemEnabledHasChanged } |
| Перечисление | ОригинальнаяТочкаПреобразования { TopLeft, Top, TopRight, Left, ..., BottomRight } |
Свойства
|
Общедоступные функции
| QQuickItem(QQuickItem *parent = nullptr) | |
| virtual | ~QQuickItem() override |
| bool | acceptHoverEvents() const |
| bool | acceptTouchEvents() const |
| Qt::MouseButtons | acceptedMouseButtons() const |
| bool | activeFocusOnTab() const |
| bool | antialiasing() const |
| qreal | baselineOffset() const |
| QQuickItem * | childAt(qreal x, qreal y) const |
| QList<QQuickItem *> | childItems() const |
| QRectF | childrenRect() |
| bool | clip() const |
| QObject * | containmentMask() const |
| virtual bool | contains(const QPointF &point) const |
| QCursor | cursor() const |
| bool | filtersChildMouseEvents() const |
| QQuickItem::Flags | flags() const |
| void | forceActiveFocus() |
| void | forceActiveFocus(Qt::FocusReason reason) |
| void | grabMouse() |
| QSharedPointer<QQuickItemGrabResult> | grabToImage(const QSize &targetSize = QSize()) |
| void | grabTouchPoints(const QVector<int> &ids) |
| bool | hasActiveFocus() const |
| bool | hasFocus() const |
| qreal | height() const |
| qreal | implicitHeight() const |
| qreal | implicitWidth() const |
| virtual QVariant | inputMethodQuery(Qt::InputMethodQuery query) const |
| bool | isAncestorOf(const QQuickItem *child) const |
| bool | isEnabled() const |
| bool | isFocusScope() const |
| virtual bool | isTextureProvider() const |
| bool | isVisible() const |
| bool | keepMouseGrab() const |
| bool | keepTouchGrab() const |
| QPointF | mapFromGlobal(const QPointF &point) const |
| QPointF | mapFromItem(const QQuickItem *item, const QPointF &point) const |
| QPointF | mapFromScene(const QPointF &point) const |
| QRectF | mapRectFromItem(const QQuickItem *item, const QRectF &rect) const |
| QRectF | mapRectFromScene(const QRectF &rect) const |
| QRectF | mapRectToItem(const QQuickItem *item, const QRectF &rect) const |
| QRectF | mapRectToScene(const QRectF &rect) const |
| QPointF | mapToGlobal(const QPointF &point) const |
| QPointF | mapToItem(const QQuickItem *item, const QPointF &point) const |
| QPointF | mapToScene(const QPointF &point) const |
| QQuickItem * | nextItemInFocusChain(bool forward = true) |
| qreal | opacity() const |
| QQuickItem * | parentItem() const |
| void | polish() |
| void | resetAntialiasing() |
| void | resetHeight() |
| void | resetWidth() |
| qreal | rotation() const |
| qreal | scale() const |
| QQuickItem * | scopedFocusItem() const |
| void | setAcceptHoverEvents(bool enabled) |
| void | setAcceptTouchEvents(bool enabled) |
| void | setAcceptedMouseButtons(Qt::MouseButtons buttons) |
| void | setActiveFocusOnTab(bool) |
| void | setAntialiasing(bool) |
| void | setBaselineOffset(qreal) |
| void | setClip(bool) |
| void | setContainmentMask(QObject *mask) |
| void | setCursor(const QCursor &cursor) |
| void | setEnabled(bool) |
| void | setFiltersChildMouseEvents(bool filter) |
| void | setFlag(QQuickItem::Flag flag, bool enabled = true) |
| void | setFlags(QQuickItem::Flags flags) |
| void | setFocus(bool) |
| void | setFocus(bool focus, Qt::FocusReason reason) |
| void | setHeight(qreal) |
| void | setImplicitHeight(qreal) |
| void | setImplicitWidth(qreal) |
| void | setKeepMouseGrab(bool keep) |
| void | setKeepTouchGrab(bool keep) |
| void | setOpacity(qreal) |
| void | setParentItem(QQuickItem *parent) |
| void | setRotation(qreal) |
| void | setScale(qreal) |
| void | setSize(const QSizeF &size) |
| void | setSmooth(bool) |
| void | setState(const QString &) |
| void | setTransformOrigin(QQuickItem::TransformOrigin) |
| void | setVisible(bool) |
| void | setWidth(qreal) |
| void | setX(qreal) |
| void | setY(qreal) |
| void | setZ(qreal) |
| QSizeF | size() const |
| bool | smooth() const |
| void | stackAfter(const QQuickItem *sibling) |
| void | stackBefore(const QQuickItem *sibling) |
| QString | state() const |
| virtual QSGTextureProvider * | textureProvider() const |
| QQuickItem::TransformOrigin | transformOrigin() const |
| void | ungrabMouse() |
| void | ungrabTouchPoints() |
| void | unsetCursor() |
| qreal | width() const |
| QQuickWindow * | window() const |
| qreal | x() const |
| qreal | y() const |
| qreal | z() const |
Public Slots
| void | update() |
Signals
| void | activeFocusChanged(bool) |
| void | activeFocusOnTabChanged(bool) |
| void | antialiasingChanged(bool) |
| void | baselineOffsetChanged(qreal) |
| void | childrenRectChanged(const QRectF &) |
| void | clipChanged(bool) |
| void | containmentMaskChanged() |
| void | enabledChanged() |
| void | focusChanged(bool) |
| void | heightChanged() |
| void | implicitHeightChanged() |
| void | implicitWidthChanged() |
| void | opacityChanged() |
| void | parentChanged(QQuickItem *) |
| void | rotationChanged() |
| void | scaleChanged() |
| void | smoothChanged(bool) |
| void | stateChanged(const QString &) |
| void | transformOriginChanged(QQuickItem::TransformOrigin) |
| void | visibleChanged() |
| void | widthChanged() |
| void | windowChanged(QQuickWindow *window) |
| void | xChanged() |
| void | yChanged() |
| void | zChanged() |
Защищенные функции
| virtual bool | childMouseEventFilter(QQuickItem *item, QEvent *event) |
| virtual void | dragEnterEvent(QDragEnterEvent *event) |
| virtual void | dragLeaveEvent(QDragLeaveEvent *event) |
| virtual void | dragMoveEvent(QDragMoveEvent *event) |
| virtual void | dropEvent(QDropEvent *event) |
| virtual void | focusInEvent(QFocusEvent *) |
| virtual void | focusOutEvent(QFocusEvent *) |
| virtual void | geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) |
| bool | heightValid() const |
| virtual void | hoverEnterEvent(QHoverEvent *event) |
| virtual void | hoverLeaveEvent(QHoverEvent *event) |
| virtual void | hoverMoveEvent(QHoverEvent *event) |
| virtual void | inputMethodEvent(QInputMethodEvent *event) |
| bool | isComponentComplete() const |
| virtual void | itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &value) |
| virtual void | keyPressEvent(QKeyEvent *event) |
| virtual void | keyReleaseEvent(QKeyEvent *event) |
| virtual void | mouseDoubleClickEvent(QMouseEvent *event) |
| virtual void | mouseMoveEvent(QMouseEvent *event) |
| virtual void | mousePressEvent(QMouseEvent *event) |
| virtual void | mouseReleaseEvent(QMouseEvent *event) |
| virtual void | mouseUngrabEvent() |
| virtual void | releaseResources() |
| virtual void | touchEvent(QTouchEvent *event) |
| virtual void | touchUngrabEvent() |
| void | updateInputMethod(Qt::InputMethodQueries queries = Qt::ImQueryInput) |
| virtual QSGNode * | updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *updatePaintNodeData) |
| virtual void | updatePolish() |
| virtual void | wheelEvent(QWheelEvent *event) |
| bool | widthValid() const |
Реализованные защищённые функции
| virtual void | classBegin() override |
| virtual void | componentComplete() override |
| virtual bool | event(QEvent *ev) override |
Подробное описание
Все визуальные элементы в Qt Quick наследуются от QQuickItem. Хотя экземпляр QQuickItem не имеет визуального представления, он определяет все атрибуты, общие для визуальных элементов, такие как положение x и y, ширина и высота, привязка и поддержка обработки нажатий клавиш.
Вы можете создать подкласс QQuickItem, чтобы предоставить свой собственный пользовательский визуальный элемент, который наследует эти функции.
Пользовательские элементы сцены
Все визуальные элементы QML отрисовываются с помощью графического дерева, по умолчанию реализованного как низкоуровневый высокопроизводительный стек рендеринга, тесно связанный с OpenGL. Подклассы QQuickItem могут добавлять свой собственный пользовательский контент в графическое дерево, установив флаг QQuickItem::ItemHasContents и переопределив функцию QQuickItem::updatePaintNode().
Предупреждение: Необходимо, чтобы операции OpenGL и взаимодействие с графическим деревом происходили исключительно в потоке рендеринга, в основном во время вызова updatePaintNode(). Лучшее правило — использовать только классы с префиксом «QSG» внутри функции QQuickItem::updatePaintNode().
Примечание: Все классы с префиксом QSG должны использоваться исключительно в потоке рендеринга графического дерева. Для получения дополнительной информации см. Графическое дерево и рендеринг.
Обработка графических ресурсов
Предпочтительный способ обработки очистки графических ресурсов, используемых в графическом дереве, — это полагаться на автоматическую очистку узлов. QSGNode, возвращаемый из QQuickItem::updatePaintNode(), автоматически удаляется в правильном потоке в нужное время. Деревья экземпляров QSGNode управляются с помощью QSGNode::OwnedByParent, которое устанавливается по умолчанию. Поэтому для большинства пользовательских элементов графического дерева дополнительных действий не потребуется.
Реализации, которые хранят графические ресурсы вне дерева узлов, например, элемент, реализующий QQuickItem::textureProvider(), должны позаботиться об их корректной очистке в зависимости от того, как элемент используется в QML. Ситуации, которые нужно обработать:
- Графическое дерево становится недействительным; это может произойти, например, если окно скрыто с помощью QQuickWindow::hide(). Если класс элемента реализует слот с именем
slot, этот слот будет вызван в потоке рендеринга, в то время как поток GUI заблокирован. Это эквивалентно подключению к QQuickWindow::sceneGraphInvalidated(). Контекст OpenGL окна этого элемента будет привязан, когда этот слот будет вызван. Исключением является случай, когда собственный OpenGL был уничтожен вне контроля Qt, например, черезEGL_CONTEXT_LOST. - Элемент удален из сцены; если элемент удален из сцены, например, потому что его родитель был установлен в
nullили элемент находится в другом окне, QQuickItem::releaseResources() будет вызван в потоке GUI. Следует использовать QQuickWindow::scheduleRenderJob() для планирования очистки ресурсов рендеринга. - Элемент удален; когда выполняется деструктор элемента, он должен удалить все графические ресурсы, которые у него есть. Если ни одно из двух вышеуказанных условий не выполнилось, элемент будет частью окна, и можно использовать QQuickWindow::scheduleRenderJob() для их очистки. Если реализация игнорирует вызов QQuickItem::releaseResources(), элемент во многих случаях больше не будет иметь доступа к QQuickWindow и, следовательно, не сможет запланировать очистку.
При планировании очистки графических ресурсов с помощью QQuickWindow::scheduleRenderJob(), следует использовать либо QQuickWindow::BeforeSynchronizingStage, либо QQuickWindow::AfterSynchronizingStage. Стадия синхронизации — это то место, где графическое дерево изменяется в результате изменений в дереве QML. Если очистка запланирована в любое другое время, это может привести к тому, что другие части графического дерева будут ссылаться на только что удаленные объекты, поскольку эти части не были обновлены.
Примечание: Не рекомендуется использовать QObject::deleteLater() для очистки графических ресурсов, так как это будет выполняться в произвольное время, и неизвестно, будет ли привязан контекст OpenGL во время удаления.
Пользовательские элементы QPainter
QQuickItem предоставляет подкласс QQuickPaintedItem, который позволяет пользователям рендерить контент с помощью QPainter.
Предупреждение: Использование QQuickPaintedItem использует косвенную 2D-поверхность для рендеринга своего содержимого, либо используя программную растризацию, либо используя объект буфера кадра OpenGL (FBO), поэтому рендеринг является двухэтапной операцией. Сначала растрируйте поверхность, затем нарисуйте поверхность. Использование API графического дерева напрямую всегда значительно быстрее.
Анимации поведения
Если ваш элемент использует тип Behavior для определения анимаций изменений свойств, всегда используйте либо QObject::setProperty(), QQmlProperty(), или QMetaProperty::write() при необходимости изменения этих свойств из C++. Это гарантирует, что движок QML знает о изменении свойства. В противном случае движок не сможет выполнить запрошенную анимацию. Обратите внимание, что эти функции влекут за собой небольшую потерю производительности. Для получения дополнительной информации см. Доступ к членам типа объекта QML из C++.
См. также QQuickWindow и QQuickPaintedItem.
Документация по типам членов
перечисление QQuickItem::Flagфлаги QQuickItem::Flags
Этот тип перечисления используется для указания различных свойств элемента.
| Константа | Значение | Описание |
|---|---|---|
QQuickItem::ItemClipsChildrenToShape |
0x01 |
Указывает, что этот элемент должен визуально обрезать своих дочерних элементов, так что они будут рендериться только внутри границ этого элемента. |
QQuickItem::ItemAcceptsInputMethod |
0x02 |
Указывает, что элемент поддерживает методы ввода текста. |
QQuickItem::ItemIsFocusScope |
0x04 |
Указывает, что элемент является областью фокусировки. Дополнительную информацию см. в Фокус клавиатуры в Qt Quick. |
QQuickItem::ItemHasContents |
0x08 |
Указывает, что элемент имеет визуальное содержимое и должен рендериться графическим деревом. |
QQuickItem::ItemAcceptsDrops |
0x10 |
Указывает, что элемент принимает события перетаскивания. |
Тип Flags является псевдонимом для QFlags<Flag>. Он хранит комбинацию значений Flag с помощью операции ИЛИ.
См. также setFlag(), setFlags() и flags().
перечисление QQuickItem::ItemChange
Используется совместно с QQuickItem::itemChange() для уведомления элемента о определенных типах изменений.
| Константа | Значение | Описание |
|---|---|---|
QQuickItem::ItemChildAddedChange |
0 |
К элементу добавлен дочерний элемент. ItemChangeData::item содержит добавленный дочерний элемент. |
QQuickItem::ItemChildRemovedChange |
1 |
Дочерний элемент был удален. ItemChangeData::item содержит удалённый дочерний элемент. |
QQuickItem::ItemSceneChange |
2 |
Элемент был добавлен или удален из сцены. Окно отрисовки QQuickWindow сцены указано в ItemChangeData::window. Параметр window равен null, когда элемент удаляется из сцены. |
QQuickItem::ItemVisibleHasChanged |
3 |
Изменился видимый статус элемента. ItemChangeData::boolValue содержит новое значение видимости. |
QQuickItem::ItemParentHasChanged |
4 |
Изменился родительский элемент. ItemChangeData::item содержит нового родителя. |
QQuickItem::ItemOpacityHasChanged |
5 |
Изменилась непрозрачность элемента. ItemChangeData::realValue содержит новую непрозрачность. |
QQuickItem::ItemActiveFocusHasChanged |
6 |
Изменился фокус элемента. ItemChangeData::boolValue содержит информацию о том, имеет ли элемент фокус. |
QQuickItem::ItemRotationHasChanged |
7 |
Изменился угол поворота элемента. ItemChangeData::realValue содержит новый угол поворота. |
QQuickItem::ItemDevicePixelRatioHasChanged |
9 |
Изменилось значение отношения пикселей устройства экрана, на котором находится элемент. ItemChangedData::realValue содержит новое значение отношения пикселей устройства. |
QQuickItem::ItemAntialiasingHasChanged |
8 |
Изменилось значение сглаживания. Текущее (булево) значение можно найти в QQuickItem::antialiasing. |
QQuickItem::ItemEnabledHasChanged |
10 |
Изменилось состояние активности элемента. ItemChangeData::boolValue содержит новое состояние активности. (с Qt 5.10) |
перечисление QQuickItem::TransformOrigin
Управляет точкой, относительно которой применяются простые преобразования, такие как масштабирование.
| Константа | Значение | Описание |
|---|---|---|
QQuickItem::TopLeft |
0 |
Левый верхний угол элемента. |
QQuickItem::Top |
1 |
Центр верхней части элемента. |
QQuickItem::TopRight |
2 |
Правый верхний угол элемента. |
QQuickItem::Left |
3 |
Самая левая точка вертикальной середины. |
QQuickItem::Center |
4 |
Центр элемента. |
QQuickItem::Right |
5 |
Самая правая точка вертикальной середины. |
QQuickItem::BottomLeft |
6 |
Левый нижний угол элемента. |
QQuickItem::Bottom |
7 |
Центр нижней части элемента. |
QQuickItem::BottomRight |
8 |
Правый нижний угол элемента. |
См. также transformOrigin() и setTransformOrigin().
Свойства
activeFocus : const bool
Это свойство только для чтения указывает, имеет ли элемент активный фокус.
Если activeFocus имеет значение true, то либо этот элемент в настоящее время получает клавиатурный ввод, либо это предок FocusScope элемента, который в настоящее время получает клавиатурный ввод.
Обычно activeFocus приобретается путем установки focus для элемента и его включающих объектов FocusScope. В следующем примере объекты input и focusScope будут иметь активный фокус, а корневой объект rectangle — нет.
import QtQuick 2.0
Rectangle {
width: 100; height: 100
FocusScope {
focus: true
TextInput {
id: input
focus: true
}
}
} Функции доступа:
| bool | hasActiveFocus() const |
Сигнал уведомления:
| void | activeFocusChanged(bool) |
См. также focus и Фокус клавиатуры в Qt Quick.
activeFocusOnTab : bool
Это свойство определяет, хочет ли элемент находиться в цепочке фокуса табуляции. По умолчанию это значение установлено в false.
Функции доступа:
| bool | activeFocusOnTab() const |
| void | setActiveFocusOnTab(bool) |
Сигнал уведомления:
| void | activeFocusOnTabChanged(bool) |
antialiasing : bool
Указывает, применяется ли к элементу сглаживание или нет
Используется визуальными элементами для определения того, следует ли элементу использовать сглаживание или нет. В некоторых случаях элементы со сглаживанием требуют больше памяти и потенциально медленнее рендеринга (см. Сглаживание для получения дополнительной информации).
Значение по умолчанию — false, но может быть переопределено производными элементами.
Функции доступа:
| bool | antialiasing() const |
| void | setAntialiasing(bool) |
| void | resetAntialiasing() |
Сигнал уведомления:
| void | antialiasingChanged(bool) |
baselineOffset : qreal
Указывает положение базовой линии элемента в локальных координатах.
Базовая линия элемента Text — это воображаемая линия, на которой находится текст. Элементы управления, содержащие текст, обычно устанавливают свою базовую линию на базовую линию своего текста.
Для нетекстовых элементов используется смещение базовой линии по умолчанию, равное 0.
Функции доступа:
| qreal | baselineOffset() const |
| void | setBaselineOffset(qreal) |
Сигнал уведомления:
| void | baselineOffsetChanged(qreal) |
childrenRect : const QRectF
Это свойство содержит коллективное положение и размер дочерних элементов.
Это свойство полезно, если вам нужно получить доступ к коллективной геометрии дочерних элементов для правильного изменения размера элемента.
Функции доступа:
| QRectF | childrenRect() |
Сигнал уведомления:
| void | childrenRectChanged(const QRectF &) |
clip : bool
Это свойство определяет, включена ли обрезка. Значение обрезки по умолчанию — false.
Если обрезка включена, элемент будет обрезать собственное рисование, а также рисование своих дочерних элементов, до своего ограничивающего прямоугольника. Если вы устанавливаете обрезку во время операции рисования элемента, не забудьте переустановить ее, чтобы предотвратить обрезку остальной части вашей сцены.
Функции доступа:
| bool | clip() const |
| void | setClip(bool) |
Сигнал уведомления:
| void | clipChanged(bool) |
enabled : bool
Это свойство определяет, получает ли элемент события мыши и клавиатуры. По умолчанию это значение равно true.
Непосредственная установка этого свойства влияет на значение enabled дочерних элементов. Когда установлено в false, значения enabled всех дочерних элементов также становятся false. Когда установлено в true, значения enabled дочерних элементов возвращаются к true, если они не были явно установлены в false.
Установка этого свойства в false автоматически приводит к тому, что activeFocus устанавливается в false, и этот элемент больше не будет получать события клавиатуры.
Функции доступа:
| bool | isEnabled() const |
| void | setEnabled(bool) |
Сигнал уведомления:
| void | enabledChanged() |
См. также visible.
focus : bool
Это свойство определяет, имеет ли элемент фокус в пределах включающего FocusScope. Если true, этот элемент получит активный фокус, когда включающий FocusScope получит активный фокус.
В следующем примере input получит активный фокус, когда scope получит активный фокус:
import QtQuick 2.0
Rectangle {
width: 100; height: 100
FocusScope {
id: scope
TextInput {
id: input
focus: true
}
}
} Для целей этого свойства предполагается, что сцена в целом действует как область фокуса. На практике это означает, что следующий QML даст активный фокус input при запуске.
Rectangle {
width: 100; height: 100
TextInput {
id: input
focus: true
}
} Функции доступа:
| bool | hasFocus() const |
| void | setFocus(bool) |
| void | setFocus(bool focus, Qt::FocusReason reason) |
Сигнал уведомления:
| void | focusChanged(bool) |
См. также activeFocus и Фокус клавиатуры в Qt Quick.
height : qreal
Это свойство содержит высоту этого элемента.
Функции доступа:
| qreal | height() const |
| void | setHeight(qreal) |
| void | resetHeight() |
Сигнал уведомления:
| void | heightChanged() |
opacity : qreal
Это свойство содержит непрозрачность элемента. Непрозрачность задается числом от 0,0 (полностью прозрачный) до 1,0 (полностью непрозрачный). Значение по умолчанию равно 1,0.
Когда это свойство установлено, указанная непрозрачность также применяется индивидуально к дочерним элементам. Это может привести к непредвиденному эффекту в некоторых обстоятельствах. Например, во втором наборе прямоугольников ниже красный прямоугольник имеет указанную непрозрачность 0,5, которая влияет на непрозрачность его синего дочернего прямоугольника, даже если дочерний элемент не указал непрозрачность.
Значения вне диапазона от 0 до 1 будут ограничены.
Item {
Rectangle {
color: "red"
width: 100; height: 100
Rectangle {
color: "blue"
x: 50; y: 50; width: 100; height: 100
}
}
} |
|
Item {
Rectangle {
opacity: 0.5
color: "red"
width: 100; height: 100
Rectangle {
color: "blue"
x: 50; y: 50; width: 100; height: 100
}
}
} |
Изменение непрозрачности элемента не влияет на получение им событий пользовательского ввода. (В отличие от этого, установка свойства visible в false блокирует события мыши, а установка свойства enabled в false блокирует события мыши и клавиатуры, а также снимает активный фокус с элемента.)
Функции доступа:
| qreal | opacity() const |
| void | setOpacity(qreal) |
Сигнал уведомления:
| void | opacityChanged() |
См. также visible.
parent : QQuickItem*
Это свойство содержит визуального родителя элемента.
Примечание: Понятие визуального родителя отличается от понятия родителя QObject. Визуальный родитель элемента может не совпадать с его родителем в объектной иерархии. Подробнее см. Концепции - Визуальный родитель в Qt Quick.
Функции доступа:
| QQuickItem * | parentItem() const |
| void | setParentItem(QQuickItem *parent) |
Сигнал уведомления:
| void | parentChanged(QQuickItem *) |
rotation : qreal
Это свойство содержит угол поворота элемента в градусах по часовой стрелке вокруг его transformOrigin.
Значение по умолчанию равно 0 градусов (то есть, без поворота).
Rectangle {
color: "blue"
width: 100; height: 100
Rectangle {
color: "red"
x: 25; y: 25; width: 50; height: 50
rotation: 30
}
} |
Функции доступа:
| qreal | rotation() const |
| void | setRotation(qreal) |
Сигнал уведомления:
| void | rotationChanged() |
См. также Transform и Rotation.
scale : qreal
Это свойство содержит коэффициент масштабирования этого элемента.
Масштаб меньше 1.0 приводит к отображению элемента в меньшем размере, а масштаб больше 1.0 - в большем. Отрицательный масштаб отражает элемент при отображении.
Значение по умолчанию равно 1.0.
Масштабирование применяется от transformOrigin.
import QtQuick 2.0
Rectangle {
color: "blue"
width: 100; height: 100
Rectangle {
color: "green"
width: 25; height: 25
}
Rectangle {
color: "red"
x: 25; y: 25; width: 50; height: 50
scale: 1.4
}
} |
Функции доступа:
| qreal | scale() const |
| void | setScale(qreal) |
Сигнал уведомления:
| void | scaleChanged() |
smooth : bool
Указывает, сглажен ли элемент.
В основном используется для элементов на основе изображений, чтобы определить, должен ли элемент использовать сглаживание с линейной интерполяцией или нет. Сглаживание выполняется с использованием линейной интерполяции, а не сглаживание - с использованием ближайшего соседа.
В Qt Quick 2.0 это свойство минимально влияет на производительность.
По умолчанию это свойство установлено в true.
Функции доступа:
| bool | smooth() const |
| void | setSmooth(bool) |
Сигнал уведомления:
| void | smoothChanged(bool) |
state : QString
Это свойство содержит имя текущего состояния элемента.
Если элемент находится в своем состоянии по умолчанию, то есть не было задано явного состояния, то это свойство содержит пустую строку. Аналогично, вы можете вернуть элемент в состояние по умолчанию, установив это свойство в пустую строку.
Функции доступа:
| QString | state() const |
| void | setState(const QString &) |
Сигнал уведомления:
| void | stateChanged(const QString &) |
См. также Состояния Qt Quick.
transformOrigin : TransformOrigin
Это свойство содержит точку начала преобразования, вокруг которой применяются масштабирование и поворот.
Доступны девять точек начала преобразования, как показано на рисунке ниже. Точка начала преобразования по умолчанию Item.Center.
Функции доступа:
| QQuickItem::TransformOrigin | transformOrigin() const |
| void | setTransformOrigin(QQuickItem::TransformOrigin) |
Сигнал уведомления:
| void | transformOriginChanged(QQuickItem::TransformOrigin) |
visible : bool
Это свойство указывает, виден ли элемент. По умолчанию это true.
Прямое изменение этого свойства влияет на свойство visible дочерних элементов. При установке в false, свойство visible всех дочерних элементов также становится false. При установке в true, значения visible дочерних элементов возвращаются к true, если они не были явно установлены в false.
(Из-за этого поведения, использование свойства visible может не иметь ожидаемого эффекта, если привязку свойства следует инициировать только при явном изменении свойства. В таких случаях лучше использовать свойство opacity.)
Если это свойство установлено в false, элемент больше не будет получать события мыши, но продолжит получать события клавиатуры и сохранит фокус клавиатуры, если он был установлен. (В отличие от этого, установка свойства enabled в false блокирует как события мыши, так и клавиатуры, а также снимает фокус с элемента.)
Примечание: Значение этого свойства изменяется только при изменении этого свойства или свойства родителя visible. Оно не изменяется, например, если этот элемент выходит за пределы экрана или если свойство opacity изменяется на 0.
Функции доступа:
| bool | isVisible() const |
| void | setVisible(bool) |
Сигнал уведомления:
| void | visibleChanged() |
width : qreal
Это свойство содержит ширину этого элемента.
Функции доступа:
| qreal | width() const |
| void | setWidth(qreal) |
| void | resetWidth() |
Сигнал уведомления:
| void | widthChanged() |
x : qreal
Определяет позицию элемента x относительно родительского элемента.
Функции доступа:
| qreal | x() const |
| void | setX(qreal) |
Сигнал уведомления:
| void | xChanged() |
y : qreal
Определяет позицию элемента y относительно родительского элемента.
Функции доступа:
| qreal | y() const |
| void | setY(qreal) |
Сигнал уведомления:
| void | yChanged() |
z : qreal
Устанавливает порядок следования элементов-братьев. По умолчанию порядок следования равен 0.
Элементы с более высоким значением порядка следования отображаются поверх элементов с меньшим порядком следования. Элементы с одинаковым значением порядка следования отображаются снизу вверх в порядке их появления. Элементы с отрицательным значением порядка следования отображаются под содержимым родительского элемента.
Следующий пример демонстрирует различные эффекты порядка следования.
Одинаковый z - потомки, появившиеся позже, отображаются над потомками, появившимися ранее:Item {
Rectangle {
color: "red"
width: 100; height: 100
}
Rectangle {
color: "blue"
x: 50; y: 50; width: 100; height: 100
}
} |
|
Более высокий z сверху:Item {
Rectangle {
z: 1
color: "red"
width: 100; height: 100
}
Rectangle {
color: "blue"
x: 50; y: 50; width: 100; height: 100
}
} |
|
Одинаковый z - дети над родителями:Item {
Rectangle {
color: "red"
width: 100; height: 100
Rectangle {
color: "blue"
x: 50; y: 50; width: 100; height: 100
}
}
} |
|
Меньший z снизу:Item {
Rectangle {
color: "red"
width: 100; height: 100
Rectangle {
z: -1
color: "blue"
x: 50; y: 50; width: 100; height: 100
}
}
} |
Функции доступа:
| qreal | z() const |
| void | setZ(qreal) |
Сигнал уведомления:
| void | zChanged() |
Документация по членам-функциям
Определяет естественную ширину или высоту элемента, если не задана ширина или высота.
По умолчанию неявный размер для большинства элементов равен 0x0, однако некоторые элементы имеют неявный размер, который нельзя переопределить, например, Image и Text.
Установка неявного размера полезна для определения компонентов, у которых предпочтительный размер определяется их содержимым, например:
// Label.qml
import QtQuick 2.0
Item {
property alias icon: image.source
property alias label: text.text
implicitWidth: text.implicitWidth + image.implicitWidth
implicitHeight: Math.max(text.implicitHeight, image.implicitHeight)
Image { id: image }
Text {
id: text
wrapMode: Text.Wrap
anchors.left: image.right; anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
}
} Примечание: Использование implicitWidth для Text или TextEdit и явное указание ширины приводит к снижению производительности, поскольку текст необходимо выводить дважды.
QQuickItem::QQuickItem(QQuickItem *parent = nullptr)
Создаёт QQuickItem с заданным parent.
Parent будет использоваться как визуальный родитель, так и родительский объект QObject.
[slot] void QQuickItem::update()
Планирует вызов updatePaintNode() для этого элемента.
Вызов QQuickItem::updatePaintNode() всегда происходит, если элемент отображается в QQuickWindow.
Вызывать QQuickItem::update() могут только элементы, которые указывают QQuickItem::ItemHasContents.
[signal] void QQuickItem::windowChanged(QQuickWindow *window)
Этот сигнал испускается, когда изменяется окно элемента window.
[override virtual] QQuickItem::~QQuickItem()
Уничтожает QQuickItem.
bool QQuickItem::acceptHoverEvents() const
Возвращает значение, указывающее, принимаются ли события наведения курсора этим элементом.
Значение по умолчанию — false.
Если значение равно false, элемент не будет получать события наведения курсора через функции hoverEnterEvent(), hoverMoveEvent() и hoverLeaveEvent().
См. также setAcceptHoverEvents().
bool QQuickItem::acceptTouchEvents() const
Возвращает значение, указывающее, принимаются ли события касания этим элементом.
Значение по умолчанию — false.
Если значение равно false, элемент не будет получать события касания через функцию touchEvent().
Функция была добавлена в Qt 5.10.
См. также setAcceptTouchEvents().
Qt::MouseButtons QQuickItem::acceptedMouseButtons() const
Возвращает принятые кнопкой мыши этим элементом.
Значение по умолчанию — Qt::NoButton; то есть не принимаются никакие кнопки мыши.
Если элемент не принимает кнопку мыши для конкретного события мыши, событие мыши не будет передано элементу и будет передано следующему элементу в иерархии элементов.
См. также setAcceptedMouseButtons().
QQuickItem *QQuickItem::childAt(qreal x, qreal y) const
Возвращает первый видимый дочерний элемент, найденный в точке (x, y) в системе координат этого элемента.
Возвращает nullptr , если такого элемента нет.
Примечание: Эту функцию можно вызывать через систему метаобъектов и из QML. См. Q_INVOKABLE.
QList<QQuickItem *> QQuickItem::childItems() const
Возвращает дочерние элементы этого элемента.
[virtual protected] bool QQuickItem::childMouseEventFilter(QQuickItem *item, QEvent *event)
Переопределите этот метод для фильтрации событий мыши, которые получают дочерние элементы этого элемента.
Этот метод будет вызываться только в том случае, если filtersChildMouseEvents() равно true.
Возвращает true, если указанное event не должно передаваться указанному дочернему элементу item, и false в противном случае.
См. также setFiltersChildMouseEvents().
[override virtual protected] void QQuickItem::classBegin()
Переопределяет: QQmlParserStatus::classBegin().
Производные классы должны вызывать метод базового класса перед добавлением собственного действия для выполнения в classBegin.
[override virtual protected] void QQuickItem::componentComplete()
Переопределяет: QQmlParserStatus::componentComplete().
Производные классы должны вызывать метод базового класса перед добавлением собственных действий для выполнения в componentComplete.
[virtual] bool QQuickItem::contains(const QPointF &point) const
Возвращает true, если этот элемент содержит point, которая указана в локальных координатах; в противном случае возвращает false.
Этот метод можно переопределить для обработки столкновений точек в элементах с настраиваемыми формами. По умолчанию проверяется, находится ли точка внутри ограничивающего прямоугольника элемента.
Обратите внимание, что этот метод обычно используется для проверки, находится ли элемент под курсором мыши, и поэтому его реализация должна быть максимально эффективной.
Примечание: Эту функцию можно вызывать через систему метаобъектов и из QML. См. Q_INVOKABLE.
QCursor QQuickItem::cursor() const
Возвращает форму курсора для этого элемента.
Курсор мыши примет эту форму при наведении на этот элемент, если не задан курсор-переопределение. См. список предопределённых объектов курсора для набора полезных форм.
Если форма курсора не задана, возвращается курсор с формой Qt::ArrowCursor, однако может отображаться другая форма курсора, если перекрывающий элемент имеет допустимый курсор.
См. также setCursor() и unsetCursor().
[virtual protected] void QQuickItem::dragEnterEvent(QDragEnterEvent *event)
Обработчик этого события может быть переопределён в подклассе для получения событий drag-enter для элемента. Информация о событии предоставляется параметром event.
События перетаскивания и помещения предоставляются только в том случае, если для данного элемента установлен флаг ItemAcceptsDrops.
Событие принимается по умолчанию, поэтому нет необходимости явно принимать событие, если вы переопределяете эту функцию. Если вы не принимаете событие, вызовите event->ignore().
См. также Перетаскивание и Перетаскивание и помещение.
[virtual protected] void QQuickItem::dragLeaveEvent(QDragLeaveEvent *event)
Обработчик этого события может быть переопределён в подклассе для получения событий drag-leave для элемента. Информация о событии предоставляется параметром event.
События перетаскивания и помещения предоставляются только в том случае, если для данного элемента установлен флаг ItemAcceptsDrops.
Событие принимается по умолчанию, поэтому нет необходимости явно принимать событие, если вы переопределяете эту функцию. Если вы не принимаете событие, вызовите event->ignore().
См. также Перетаскивание и Перетаскивание и помещение.
[virtual protected] void QQuickItem::dragMoveEvent(QDragMoveEvent *event)
Обработчик этого события может быть переопределён в подклассе для получения событий drag-move для элемента. Информация о событии предоставляется параметром event.
События перетаскивания и помещения предоставляются только в том случае, если для данного элемента установлен флаг ItemAcceptsDrops.
Событие принимается по умолчанию, поэтому нет необходимости явно принимать событие, если вы переопределяете эту функцию. Если вы не принимаете событие, вызовите event->ignore().
См. также Перетаскивание и Перетаскивание и помещение.
[virtual protected] void QQuickItem::dropEvent(QDropEvent *event)
Обработчик этого события может быть переопределён в подклассе для получения событий помещения для элемента. Информация о событии предоставляется параметром event.
События перетаскивания и помещения предоставляются только в том случае, если для данного элемента установлен флаг ItemAcceptsDrops.
Событие принимается по умолчанию, поэтому нет необходимости явно принимать событие, если вы переопределяете эту функцию. Если вы не принимаете событие, вызовите event->ignore().
См. также Перетаскивание и Перетаскивание и помещение.
[override virtual protected] bool QQuickItem::event(QEvent *ev)
Переопределяет: QObject::event(QEvent *e).
bool QQuickItem::filtersChildMouseEvents() const
Возвращает значение, указывающее, должны ли события мыши и касания дочерних элементов этого элемента фильтроваться через этот элемент.
См. также setFiltersChildMouseEvents() и childMouseEventFilter().
QQuickItem::Flags QQuickItem::flags() const
Возвращает флаги элемента для данного элемента.
См. также setFlags() и setFlag().
[virtual protected] void QQuickItem::focusInEvent(QFocusEvent *)
Обработчик этого события может быть переопределён в подклассе для получения событий фокуса-входа для элемента. Информация о событии предоставляется параметром event.
Событие принимается по умолчанию, поэтому нет необходимости явно принимать событие, если вы переопределяете эту функцию. Если вы не принимаете событие, вызовите event->ignore().
Если вы переопределяете эту функцию, вы должны вызвать реализацию базового класса.
[virtual protected] void QQuickItem::focusOutEvent(QFocusEvent *)
Обработчик этого события может быть переопределён в подклассе для получения событий фокуса-выхода для элемента. Информация о событии предоставляется параметром event.
Событие принимается по умолчанию, поэтому нет необходимости явно принимать событие, если вы переопределяете эту функцию. Если вы не принимаете событие, вызовите event->ignore().
void QQuickItem::forceActiveFocus()
Принудительно устанавливает активный фокус на элементе.
Этот метод устанавливает фокус на элементе и гарантирует, что все предковые объекты FocusScope в иерархии объектов также получат фокус.
Причина изменения фокуса будет Qt::OtherFocusReason. Используйте перегруженный метод, чтобы указать причину изменения фокуса для лучшей обработки изменения фокуса.
Примечание: Эта функция может быть вызвана через систему метаобъектов и из QML. См. Q_INVOKABLE.
См. также activeFocus.
void QQuickItem::forceActiveFocus(Qt::FocusReason reason)
Это перегруженная функция.
Принудительно устанавливает активный фокус на элементе с заданной причиной.
Этот метод устанавливает фокус на элементе и гарантирует, что все предковые объекты FocusScope в иерархии объектов также получат фокус.
Эта функция была добавлена в Qt 5.1.
Примечание: Эта функция может быть вызвана через систему метаобъектов и из QML. См. Q_INVOKABLE.
См. также activeFocus и Qt::FocusReason.
[virtual protected] void QQuickItem::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
Эта функция вызывается для обработки изменений геометрии данного элемента от oldGeometry до newGeometry. Если две геометрии одинаковы, ничего не происходит.
Подклассы должны вызывать базовый метод в своей реализации.
void QQuickItem::grabMouse()
Захватывает ввод мыши.
Этот элемент будет получать все события мыши до тех пор, пока не будет вызвано ungrabMouse(). Обычно эта функция не должна вызываться, так как принятие, например, события нажатия мыши гарантирует, что последующие события будут переданы элементу. Если элемент хочет взять на себя события мыши от текущего получателя, ему необходимо вызвать эту функцию.
Предупреждение: Эта функция должна использоваться с осторожностью.
QSharedPointer<QQuickItemGrabResult> QQuickItem::grabToImage(const QSize &targetSize = QSize())
Захватывает элемент в изображение в оперативной памяти.
Захват происходит асинхронно, и сигнал QQuickItemGrabResult::ready() генерируется, когда захват завершен.
Используйте targetSize для задания размера целевого изображения. По умолчанию результат будет иметь тот же размер, что и элемент.
Если захват не может быть инициирован, функция возвращает null.
Примечание: Эта функция будет рендерить элемент на внеэкранной поверхности и копировать эту поверхность из памяти GPU в память CPU, что может быть довольно дорого. Для "живого" предварительного просмотра используйте слои или ShaderEffectSource.
См. также QQuickWindow::grabWindow().
void QQuickItem::grabTouchPoints(const QVector<int> &ids)
Захватывает точки касания, заданные с помощью ids.
Эти точки касания будут принадлежать элементу до тех пор, пока они не будут освобождены. Кроме того, захват может быть украден фильтрующим элементом, например, Flickable. Используйте setKeepTouchGrab(), чтобы предотвратить кражу захвата.
См. также ungrabTouchPoints() и setKeepTouchGrab().
[protected] bool QQuickItem::heightValid() const
Возвращает значение, указывающее, была ли высота свойства явно установлена.
[virtual protected] void QQuickItem::hoverEnterEvent(QHoverEvent *event)
Обработчик этого события может быть переопределен в подклассе для получения событий входа наведения для элемента. Информация о событии предоставляется параметром event.
События наведения предоставляются только в том случае, если acceptHoverEvents() имеет значение true.
Событие принимается по умолчанию, поэтому нет необходимости явно принимать событие, если вы переопределяете эту функцию. Если вы не принимаете событие, вызовите event->ignore().
[virtual protected] void QQuickItem::hoverLeaveEvent(QHoverEvent *event)
Обработчик этого события можно переопределить в подклассе для получения событий наведения курсора на элемент и выхода с него. Информация об событии предоставляется параметром event.
События наведения курсора предоставляются только если acceptHoverEvents() равно true.
Событие принимается по умолчанию, поэтому нет необходимости явно принимать событие, если вы переопределяете эту функцию. Если вы не хотите принимать событие, вызовите event->ignore().
[virtual protected] void QQuickItem::hoverMoveEvent(QHoverEvent *event)
Обработчик этого события можно переопределить в подклассе для получения событий перемещения курсора над элементом. Информация об событии предоставляется параметром event.
События наведения курсора предоставляются только если acceptHoverEvents() равно true.
Событие принимается по умолчанию, поэтому нет необходимости явно принимать событие, если вы переопределяете эту функцию. Если вы не хотите принимать событие, вызовите event->ignore().
qreal QQuickItem::implicitWidth() const
Возвращает ширину элемента, определяемую другими свойствами, которые определяют содержимое.
Примечание: Функция-получатель для свойства implicitWidth.
См. также setImplicitWidth().
[virtual protected] void QQuickItem::inputMethodEvent(QInputMethodEvent *event)
Обработчик этого события можно переопределить в подклассе для получения событий ввода для элемента. Информация об событии предоставляется параметром event.
Событие принимается по умолчанию, поэтому нет необходимости явно принимать событие, если вы переопределяете эту функцию. Если вы не хотите принимать событие, вызовите event->ignore().
[virtual] QVariant QQuickItem::inputMethodQuery(Qt::InputMethodQuery query) const
Этот метод актуален только для элементов ввода.
Если этот элемент является элементом ввода, этот метод должен быть переопределен для возвращения соответствующих флагов метода ввода для заданного query.
См. также QWidget::inputMethodQuery().
bool QQuickItem::isAncestorOf(const QQuickItem *child) const
Возвращает true, если этот элемент является предком child (т.е., если этот элемент является родителем child или одним из предков родителя child).
Эта функция была добавлена в Qt 5.7.
См. также parentItem().
[protected] bool QQuickItem::isComponentComplete() const
Возвращает true, если построение компонента QML завершено; в противном случае возвращает false.
Зачастую желательно отложить некоторые операции до завершения компонента.
См. также componentComplete().
bool QQuickItem::isFocusScope() const
Возвращает true, если этот элемент является областью фокуса, и false в противном случае.
[virtual] bool QQuickItem::isTextureProvider() const
Возвращает true, если этот элемент является поставщиком текстур. По умолчанию возвращает false.
Эту функцию можно вызывать из любого потока.
[virtual protected] void QQuickItem::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &value)
Вызывается при возникновении события change для этого элемента.
value содержит дополнительную информацию, относящуюся к изменению, когда это применимо.
Если вы переопределяете этот метод в подклассе, убедитесь, что вызываете
QQuickItem::itemChange(change, value);
обычно в конце своей реализации, чтобы обеспечить отправку сигнала windowChanged().
bool QQuickItem::keepMouseGrab() const
Возвращает значение, определяющее, должно ли управление мышью оставаться исключительно у этого элемента.
См. также setKeepMouseGrab().
bool QQuickItem::keepTouchGrab() const
Возвращает значение, определяющее, должны ли точки касания, захваченные этим элементом, оставаться исключительно у этого элемента.
См. также setKeepTouchGrab() и keepMouseGrab().
[virtual protected] void QQuickItem::keyPressEvent(QKeyEvent *event)
Обработчик этого события можно переопределить в подклассе для получения событий нажатия клавиш для элемента. Информация об событии предоставляется параметром event.
Событие принимается по умолчанию, поэтому нет необходимости явно принимать событие, если вы переопределяете эту функцию. Если вы не хотите принимать событие, вызовите event->ignore().
[virtual protected] void QQuickItem::keyReleaseEvent(QKeyEvent *event)
Обработчик этого события можно переопределить в подклассе для получения событий отпускания клавиш для элемента. Информация об событии предоставляется параметром event.
Событие принимается по умолчанию, поэтому нет необходимости явно принимать событие, если вы переопределяете эту функцию. Если вы не хотите принимать событие, вызовите event->ignore().
QPointF QQuickItem::mapFromGlobal(const QPointF &point) const
Преобразует заданную point в глобальной системе координат экрана в эквивалентную точку в системе координат этого элемента и возвращает преобразованную координату.
При преобразовании используются следующие свойства элемента: x, y, scale, rotation, transformOrigin и transform.
Это может быть полезно, например, для добавления всплывающего окна к компоненту Qt Quick.
Примечание: Позиционирование окна выполняется менеджером окон, и это значение рассматривается только как подсказка. Поэтому фактическая позиция окна может отличаться от ожидаемой.
Эта функция была добавлена в Qt 5.7.
См. также Концепции - Визуальные координаты в Qt Quick.
QPointF QQuickItem::mapFromItem(const QQuickItem *item, const QPointF &point) const
Преобразует заданную point в системе координат item в эквивалентную точку в системе координат этого элемента и возвращает преобразованную координату.
При преобразовании используются следующие свойства элемента: x, y, scale, rotation, transformOrigin и transform.
Если item равен 0, это преобразование происходит из системы координат сцены.
См. также Концепции - Визуальные координаты в Qt Quick.
QPointF QQuickItem::mapFromScene(const QPointF &point) const
Преобразует заданную point в системе координат сцены в эквивалентную точку в системе координат этого элемента и возвращает преобразованную координату.
При преобразовании используются следующие свойства элемента: x, y, scale, rotation, transformOrigin и transform.
См. также Концепции - Визуальные координаты в Qt Quick.
QRectF QQuickItem::mapRectFromItem(const QQuickItem *item, const QRectF &rect) const
Преобразует заданный rect в системе координат item в эквивалентную прямоугольную область в системе координат этого элемента и возвращает значение преобразованного прямоугольника.
При преобразовании используются следующие свойства элемента: x, y, scale, rotation, transformOrigin и transform.
Если item равен 0, это преобразование происходит из системы координат сцены.
См. также Концепции - Визуальные координаты в Qt Quick.
QRectF QQuickItem::mapRectFromScene(const QRectF &rect) const
Преобразует заданный rect в системе координат сцены в эквивалентную прямоугольную область в системе координат этого элемента и возвращает значение преобразованного прямоугольника.
При преобразовании используются следующие свойства элемента: x, y, scale, rotation, transformOrigin и transform.
См. также Концепции - Визуальные координаты в Qt Quick.
END_OF_DOCUMENT_MARKERQRectF QQuickItem::mapRectToItem(const QQuickItem *item, const QRectF &rect) const
Преобразует заданный прямоугольник rect в системе координат этого элемента в эквивалентную прямоугольную область в системе координат элемента item и возвращает преобразованный прямоугольник.
При преобразовании используются следующие свойства элемента: x, y, масштаб, поворот, точка вращения и преобразование.
Если item равен 0, это преобразует rect в систему координат сцены.
См. также Концепции — Визуальные координаты в Qt Quick.
QRectF QQuickItem::mapRectToScene(const QRectF &rect) const
Преобразует заданный прямоугольник rect в системе координат этого элемента в эквивалентную прямоугольную область в системе координат сцены и возвращает преобразованный прямоугольник.
При преобразовании используются следующие свойства элемента: x, y, масштаб, поворот, точка вращения и преобразование.
См. также Концепции — Визуальные координаты в Qt Quick.
QPointF QQuickItem::mapToGlobal(const QPointF &point) const
Преобразует заданную точку point в системе координат этого элемента в эквивалентную точку в глобальной системе координат экрана и возвращает преобразованную координату.
При преобразовании используются следующие свойства элемента: x, y, масштаб, поворот, точка вращения и преобразование.
Например, это может быть полезно для добавления всплывающего окна к компоненту Qt Quick.
Примечание: Размещение окна выполняется менеджером окон, и это значение обрабатывается только как подсказка. Таким образом, фактическое положение окна может отличаться от ожидаемого.
Функция была добавлена в Qt 5.7.
См. также Концепции — Визуальные координаты в Qt Quick.
QPointF QQuickItem::mapToItem(const QQuickItem *item, const QPointF &point) const
Преобразует заданную точку point в системе координат этого элемента в эквивалентную точку в системе координат элемента item и возвращает преобразованную координату.
При преобразовании используются следующие свойства элемента: x, y, масштаб, поворот, точка вращения и преобразование.
Если item равен 0, это преобразует point в систему координат сцены.
См. также Концепции — Визуальные координаты в Qt Quick.
QPointF QQuickItem::mapToScene(const QPointF &point) const
Преобразует заданную точку point в системе координат этого элемента в эквивалентную точку в системе координат сцены и возвращает преобразованную координату.
При преобразовании используются следующие свойства элемента: x, y, масштаб, поворот, точка вращения и преобразование.
См. также Концепции — Визуальные координаты в Qt Quick.
[virtual protected] void QQuickItem::mouseDoubleClickEvent(QMouseEvent *event)
Этот обработчик событий может быть переопределён в подклассе для получения событий двойного щелчка мышью для элемента. Информация о событии предоставляется параметром event.
Событие принимается по умолчанию, поэтому нет необходимости явно принимать событие, если вы переопределяете эту функцию. Если вы не хотите принимать событие, вызовите event->ignore().
[virtual protected] void QQuickItem::mouseMoveEvent(QMouseEvent *event)
Этот обработчик событий может быть переопределён в подклассе для получения событий перемещения мыши для элемента. Информация о событии предоставляется параметром event.
Событие принимается по умолчанию, поэтому нет необходимости явно принимать событие, если вы переопределяете эту функцию. Если вы не хотите принимать событие, вызовите event->ignore().
[virtual protected] void QQuickItem::mousePressEvent(QMouseEvent *event)
Этот обработчик событий может быть переопределён в подклассе для получения событий нажатия мыши для элемента. Информация о событии предоставляется параметром event.
Событие принимается по умолчанию, поэтому нет необходимости явно принимать событие, если вы переопределяете эту функцию. Если вы не хотите принимать событие, вызовите event->ignore().
[virtual protected] void QQuickItem::mouseReleaseEvent(QMouseEvent *event)
Этот обработчик событий может быть переопределён в подклассе для получения событий отпускания кнопки мыши для элемента. Информация о событии предоставляется параметром event.
Событие принимается по умолчанию, поэтому нет необходимости явно принимать событие, если вы переопределяете эту функцию. Если вы не хотите принимать событие, вызовите event->ignore().
[virtual protected] void QQuickItem::mouseUngrabEvent()
Этот обработчик событий может быть переопределён в подклассе для получения уведомления о событии отпускания захвата мыши на этом элементе.
QQuickItem *QQuickItem::nextItemInFocusChain(bool forward = true)
Возвращает элемент в цепочке фокуса, следующий за этим элементом. Если forward равно true, или не указано, это следующий элемент в направлении вперёд. Если forward равно false, это следующий элемент в обратном направлении.
Примечание: Эта функция может вызываться через систему метаобъектов и из QML. См. Q_INVOKABLE.
void QQuickItem::polish()
Планирует событие полирования для этого элемента.
При обработке запроса графической системой будет вызвано updatePolish() для этого элемента.
См. также updatePolish() и QQuickTest::qIsPolishScheduled().
[virtual protected] void QQuickItem::releaseResources()
Эта функция вызывается, когда элемент должен освободить графические ресурсы, которые ещё не управляются узлами, возвращёнными из QQuickItem::updatePaintNode().
Это происходит, когда элемент собирается быть удалён из окна, в котором он ранее отображался. Элемент гарантированно имеет окно, когда функция вызывается.
Функция вызывается в потоке GUI, и состояние потока отрисовки неизвестно. Объекты не должны удаляться напрямую, а вместо этого должны быть запланированы для очистки с помощью QQuickWindow::scheduleRenderJob().
См. также Обработка графических ресурсов.
QQuickItem *QQuickItem::scopedFocusItem() const
Если этот элемент является областью фокуса, он возвращает элемент в его цепочке фокуса, который в настоящее время имеет фокус.
Возвращает nullptr , если этот элемент не является областью фокуса.
void QQuickItem::setAcceptHoverEvents(bool enabled)
Если enabled равно true, этот элемент устанавливает для себя прием событий наведения указателя; в противном случае события наведения указателя этим элементом не принимаются.
См. также acceptHoverEvents().
void QQuickItem::setAcceptTouchEvents(bool enabled)
Если enabled равно true, этот элемент устанавливает для себя прием событий касания; в противном случае события касания этим элементом не принимаются.
Эта функция была добавлена в Qt 5.10.
См. также acceptTouchEvents().
void QQuickItem::setAcceptedMouseButtons(Qt::MouseButtons buttons)
Устанавливает кнопки мыши, принимаемые этим элементом, в buttons.
См. также acceptedMouseButtons().
void QQuickItem::setCursor(const QCursor &cursor)
Устанавливает форму указателя cursor для этого элемента.
См. также cursor() и unsetCursor().
void QQuickItem::setFiltersChildMouseEvents(bool filter)
Устанавливает, будут ли события мыши и касания дочерних элементов этого элемента фильтроваться через этот элемент.
Если filter имеет значение true, то метод childMouseEventFilter() будет вызван при срабатывании события мыши для дочернего элемента.
См. также filtersChildMouseEvents().
void QQuickItem::setFlag(QQuickItem::Flag flag, bool enabled = true)
Включает указанный флаг flag для данного элемента, если enabled имеет значение true; если enabled имеет значение false, то флаг отключается.
Эти флаги предоставляют различные подсказки для элемента; например, флаг ItemClipsChildrenToShape указывает, что все дочерние элементы данного элемента должны быть обрезаны, чтобы уместиться в области элемента.
void QQuickItem::setFlags(QQuickItem::Flags flags)
Включает указанные флаги flags для данного элемента.
См. также flags() и setFlag().
void QQuickItem::setKeepMouseGrab(bool keep)
Устанавливает, должна ли входная информация мыши оставаться исключительно у данного элемента.
Это полезно для элементов, которые хотят захватить и удерживать взаимодействие с мышью после предварительно определённого жеста. Например, элемент, интересующийся горизонтальным движением мыши, может установить keepMouseGrab в true после превышения определённого порога. После того, как keepMouseGrab установлено в true, фильтрующие элементы не будут реагировать на события мыши.
Если keep имеет значение false, фильтрующий элемент может захватить управление. Например, Flickable может попытаться захватить управление мышью, если обнаружит, что пользователь начал перемещать область просмотра.
См. также keepMouseGrab().
void QQuickItem::setKeepTouchGrab(bool keep)
Устанавливает, должны ли точки касания, захваченные этим элементом, оставаться исключительно у этого элемента.
Это полезно для элементов, которые хотят захватить и удерживать определённые точки касания после предварительно определённого жеста. Например, элемент, интересующийся горизонтальным движением точки касания, может установить setKeepTouchGrab в true после превышения определённого порога. После установки setKeepTouchGrab в true, фильтрующие элементы не будут реагировать на соответствующие точки касания.
Если keep имеет значение false, фильтрующий элемент может захватить управление. Например, Flickable может попытаться захватить управление точкой касания, если обнаружит, что пользователь начал перемещать область просмотра.
См. также keepTouchGrab() и setKeepMouseGrab().
void QQuickItem::setSize(const QSizeF &size)
Устанавливает размер элемента в size.
Эта функция была добавлена в Qt 5.10.
См. также size, setWidth и setHeight.
QSizeF QQuickItem::size() const
Возвращает размер элемента.
Эта функция была добавлена в Qt 5.10.
См. также setSize, width и height.
void QQuickItem::stackAfter(const QQuickItem *sibling)
Перемещает указанный элемент sibling на индекс после данного элемента в списке дочерних элементов. Порядок дочерних элементов влияет как на порядок визуального вывода, так и на порядок навигации по табуляции.
При условии, что значения z обоих элементов совпадают, это приведет к тому, что sibling будет отображаться под данным элементом.
Если у обоих элементов свойство activeFocusOnTab установлено в true, это также вызовет изменение порядка навигации по табуляции, при котором sibling получит фокус до данного элемента.
Указанный sibling должен быть братом данного элемента, то есть они должны иметь одного и того же непосредственного родителя.
См. также Концепции — Визуальный родитель в Qt Quick.
void QQuickItem::stackBefore(const QQuickItem *sibling)
Перемещает указанный элемент sibling на индекс перед данным элементом в списке дочерних элементов. Порядок дочерних элементов влияет как на порядок визуального вывода, так и на порядок навигации по табуляции.
При условии, что значения z обоих элементов совпадают, это приведет к тому, что sibling будет отображаться над данным элементом.
Если у обоих элементов свойство activeFocusOnTab установлено в true, это также вызовет изменение порядка навигации по табуляции, при котором sibling получит фокус после данного элемента.
Указанный sibling должен быть братом данного элемента, то есть они должны иметь одного и того же непосредственного родителя.
См. также Концепции — Визуальный родитель в Qt Quick.
[virtual] QSGTextureProvider *QQuickItem::textureProvider() const
Возвращает поставщик текстур для элемента. Стандартная реализация возвращает nullptr.
Данную функцию можно вызывать только в потоке рендеринга.
[virtual protected] void QQuickItem::touchEvent(QTouchEvent *event)
Обработчик событий может быть переопределён в подклассе для получения событий касания для элемента. Информация о событии предоставляется параметром event.
Событие принимается по умолчанию, поэтому нет необходимости явно принимать событие, если вы переопределяете эту функцию. Если вы не принимаете событие, вызовите event->ignore().
[virtual protected] void QQuickItem::touchUngrabEvent()
Этот обработчик событий можно переопределить в подклассе, чтобы получать уведомление о событии отмены захвата касания на данном элементе.
void QQuickItem::ungrabMouse()
Освобождает захват мыши после вызова grabMouse().
Обратите внимание, что данную функцию следует вызывать только тогда, когда элемент хочет прекратить обработку дальнейших событий. Нет необходимости вызывать эту функцию после события выпуска или отмены, так как в любом случае дальнейшие события не будут получены. После вызова этой функции не будут доставлены события перемещения или выпуска.
void QQuickItem::ungrabTouchPoints()
Освобождает захват касаний, принадлежащих этому элементу.
Примечание: вряд ли есть причина вызывать эту функцию. Её следует вызывать только тогда, когда элемент не хочет получать дальнейшие события, поэтому после вызова этой функции не будут доставлены события перемещения или выпуска.
См. также grabTouchPoints().
void QQuickItem::unsetCursor()
Очищает форму курсора для данного элемента.
См. также cursor() и setCursor().
[protected] void QQuickItem::updateInputMethod(Qt::InputMethodQueries queries = Qt::ImQueryInput)
Уведомляет метод ввода о новых значениях запросов, если это необходимо. queries указывает изменённые атрибуты.
[virtual protected] QSGNode *QQuickItem::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *updatePaintNodeData)
Вызывается в потоке рендеринга, когда необходимо синхронизировать состояние элемента с графическим деревом сцены.
Функция вызывается в результате QQuickItem::update(), если пользователь установил флаг QQuickItem::ItemHasContents на элементе.
Функция должна возвращать корень поддерева графического дерева сцены для данного элемента. Большинство реализаций вернут один QSGGeometryNode, содержащий визуальное представление этого элемента. oldNode — узел, возвращённый в последний раз, когда функция была вызвана. updatePaintNodeData предоставляет указатель на QSGTransformNode, связанный с этим QQuickItem.
QSGNode *MyItem::updatePaintNode(QSGNode *node, UpdatePaintNodeData *)
{
QSGSimpleRectNode *n = static_cast<QSGSimpleRectNode *>(node);
if (!n) {
n = new QSGSimpleRectNode();
n->setColor(Qt::red);
}
n->setRect(boundingRect());
return n;
} Основной поток заблокирован во время выполнения этой функции, поэтому безопасно считывать значения из экземпляра QQuickItem и других объектов в главном потоке.
Если ни один вызов QQuickItem::updatePaintNode() не приводит к фактическим изменениям в графическом дереве сцены, например, к вызову QSGNode::markDirty() или добавлению и удалению узлов, то реализация может принять решение не перерисовывать сцену, поскольку визуальный результат идентичен.
Предупреждение: крайне важно, чтобы операции OpenGL и взаимодействие с графическим деревом сцены происходили исключительно в потоке рендеринга, в основном во время вызова QQuickItem::updatePaintNode(). Лучшее правило — использовать только классы с префиксом «QSG» внутри функции QQuickItem::updatePaintNode().
Предупреждение: эта функция вызывается в потоке рендеринга. Это означает, что любые QObjects или локальные хранилища потоков, созданные в ней, будут иметь привязанность к потоку рендеринга, поэтому будьте осторожны, когда делаете что-либо, кроме рендеринга, в этой функции. Точно так же сигналы будут излучаться в потоке рендеринга и, следовательно, часто будут доставляться через очереди.
Примечание: все классы с префиксом QSG должны использоваться только в потоке рендеринга графического дерева сцены. См. Графическое дерево сцены и рендеринг для получения дополнительной информации.
См. также QSGMaterial, QSGSimpleMaterial, QSGGeometryNode, QSGGeometry, QSGFlatColorMaterial, QSGTextureMaterial, QSGNode::markDirty() и Обработка ресурсов графики.
[virtual protected] void QQuickItem::updatePolish()
Эта функция должна выполнять любой макет, необходимый для этого элемента.
Когда вызывается polish(), граф сцены планирует событие polish для этого элемента. Когда граф сцены готов отобразить этот элемент, он вызывает updatePolish(), чтобы выполнить любой макет элемента, необходимый перед отображением следующего кадра.
[virtual protected] void QQuickItem::wheelEvent(QWheelEvent *event)
Этот обработчик событий может быть переопределён в подклассе для получения событий прокрутки для элемента. Информация об событии предоставляется параметром event.
Событие принимается по умолчанию, поэтому нет необходимости явно принимать событие, если вы переопределяете эту функцию. Если вы не принимаете событие, вызовите event->ignore().
[protected] bool QQuickItem::widthValid() const
Возвращает, установлена ли свойство width явно.
QQuickWindow *QQuickItem::window() const
Возвращает окно, в котором отображается этот элемент.
Элемент не имеет окна, пока он не будет назначен в сцену. Сигнал windowChanged() предоставляет уведомление как при вводе элемента в сцену, так и при его удалении из сцены.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qquickitem.html