Класс QQuickItem
Класс QQuickItem предоставляет самые базовые визуальные элементы в Qt Quick. Подробнее...
| Заголовок: | #include <QQuickItem> |
| CMake: | find_package(Qt6 COMPONENTS Quick REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Quick) |
| qmake: | QT += quick |
| Инициализируется из: | Item |
| Наследуется от: | QObject и QQmlParserStatus |
| Наследует: |
Открытые типы
| Объединение | ItemChangeData |
| Перечисление | Флаг { ItemClipsChildrenToShape, ItemAcceptsInputMethod, ItemIsFocusScope, ItemHasContents, ItemAcceptsDrops } |
| Флаги | Флаги |
| Перечисление | Изменение элемента { ItemChildAddedChange, ItemChildRemovedChange, ItemSceneChange, ItemVisibleHasChanged, ItemParentHasChanged, …, ItemEnabledHasChanged } |
| Перечисление | Исходная точка преобразования { TopLeft, Top, TopRight, Left, Center, …, 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) |
| QSharedPointer<QQuickItemGrabResult> | grabToImage(const QSize &targetSize = QSize()) |
| 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 | 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() |
Protected Functions
| виртуальный bool | childMouseEventFilter(QQuickItem *item, QEvent *event) |
| виртуальный void | dragEnterEvent(QDragEnterEvent *event) |
| виртуальный void | dragLeaveEvent(QDragLeaveEvent *event) |
| виртуальный void | dragMoveEvent(QDragMoveEvent *event) |
| виртуальный void | dropEvent(QDropEvent *event) |
| виртуальный void | focusInEvent(QFocusEvent *) |
| виртуальный void | focusOutEvent(QFocusEvent *) |
| виртуальный void | geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) |
| bool | heightValid() const |
| виртуальный void | hoverEnterEvent(QHoverEvent *event) |
| виртуальный void | hoverLeaveEvent(QHoverEvent *event) |
| виртуальный void | hoverMoveEvent(QHoverEvent *event) |
| виртуальный void | inputMethodEvent(QInputMethodEvent *event) |
| bool | isComponentComplete() const |
| виртуальный void | itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &value) |
| виртуальный void | keyPressEvent(QKeyEvent *event) |
| виртуальный void | keyReleaseEvent(QKeyEvent *event) |
| виртуальный void | mouseDoubleClickEvent(QMouseEvent *event) |
| виртуальный void | mouseMoveEvent(QMouseEvent *event) |
| виртуальный void | mousePressEvent(QMouseEvent *event) |
| виртуальный void | mouseReleaseEvent(QMouseEvent *event) |
| виртуальный void | mouseUngrabEvent() |
| виртуальный void | releaseResources() |
| виртуальный void | touchEvent(QTouchEvent *event) |
| виртуальный void | touchUngrabEvent() |
| void | updateInputMethod(Qt::InputMethodQueries queries = Qt::ImQueryInput) |
| виртуальный QSGNode * | updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *updatePaintNodeData) |
| виртуальный void | updatePolish() |
| виртуальный void | wheelEvent(QWheelEvent *event) |
| bool | widthValid() const |
Реализованные защищённые функции
| виртуальный void | classBegin() override |
| виртуальный void | componentComplete() override |
| виртуальный bool | event(QEvent *ev) override |
Подробное описание
Все визуальные элементы в Qt Quick наследуются от QQuickItem. Хотя экземпляр QQuickItem не имеет визуального представления, он определяет все атрибуты, общие для визуальных элементов, такие как положение x и y, ширина и высота, привязка и поддержка обработки клавиш.
Вы можете подклассировать QQuickItem, чтобы предоставить собственный пользовательский визуальный элемент, который наследует эти функции.
Пользовательские элементы графика сцены
Все визуальные элементы QML отрисовываются с использованием графика сцены, по умолчанию реализующий низкоуровневый высокопроизводительный стек отрисовки, тесно связанный с ускоренными графическими API, такими как OpenGL, Vulkan, Metal или Direct 3D. Подклассы QQuickItem могут добавлять собственное содержимое в график сцены, установив флаг QQuickItem::ItemHasContents и переопределив функцию QQuickItem::updatePaintNode().
Предупреждение: Необходимо, чтобы графические операции и взаимодействие с графиком сцены происходили исключительно в потоке отрисовки, в первую очередь во время вызова updatePaintNode(). Лучшее правило – использовать только классы с префиксом "QSG" внутри функции QQuickItem::updatePaintNode().
Примечание: Все классы с префиксом QSG должны использоваться только в потоке отрисовки графика сцены. Дополнительную информацию см. в разделе График сцены и отрисовка.
Обработка графических ресурсов
Лучший способ обработки очистки графических ресурсов, используемых в графике сцены, – это полагаться на автоматическую очистку узлов. QSGNode, возвращаемый из QQuickItem::updatePaintNode(), автоматически удаляется в нужном потоке в нужное время. Деревья экземпляров QSGNode управляются с помощью QSGNode::OwnedByParent, который по умолчанию установлен. Таким образом, для большинства пользовательских элементов графика сцены дополнительных действий не потребуется.
Реализации, хранящие графические ресурсы вне дерева узлов, такие как элемент, реализующий QQuickItem::textureProvider(), должны позаботиться об их правильной очистке в зависимости от использования элемента в QML. Следует обработать следующие ситуации:
- График сцены делает недействительным; Это может произойти в зависимости от платформы и конфигурации QQuickWindow, когда окно скрывается с помощью QQuickWindow::hide() или когда оно закрывается. Если класс элемента реализует слот с именем
slot, этот слот будет вызван в потоке отрисовки, в то время как поток GUI заблокирован. Это эквивалентно подключению к QQuickWindow::sceneGraphInvalidated(). При отрисовке через OpenGL контекст OpenGL окна этого элемента будет привязан, когда вызывается этот слот. Исключением является случай, когда собственный OpenGL был уничтожен вне контроля Qt, например, черезEGL_CONTEXT_LOST. - Элемент удаляется из сцены; Если элемент удаляется из сцены, например, потому что его родитель был установлен в
null, или элемент находится в другом окне, то в потоке GUI будет вызван QQuickItem::releaseResources(). Для планирования задач очистки ресурсов отрисовки необходимо использовать QQuickWindow::scheduleRenderJob(). - Элемент удаляется; Когда выполняется деструктор элемента, он должен удалить все графические ресурсы, которые он имеет. Если ни одно из двух условий выше еще не было выполнено, элемент будет частью окна, и можно использовать QQuickWindow::scheduleRenderJob(), чтобы обеспечить их очистку. Если реализация игнорирует вызов QQuickItem::releaseResources(), в большинстве случаев элемент больше не будет иметь доступа к QQuickWindow, и таким образом не будет иметь возможности запланировать очистку.
При планировании очистки графических ресурсов с помощью QQuickWindow::scheduleRenderJob(), следует использовать либо QQuickWindow::BeforeSynchronizingStage, либо QQuickWindow::AfterSynchronizingStage. Стадия синхронизации — это момент, когда граф сцены изменяется в результате изменений в дереве QML. Если очистка запланирована в любое другое время, это может привести к тому, что другие части графа сцены будут ссылаться на только что удалённые объекты, так как эти части не были обновлены.
Примечание: Использование QObject::deleteLater() для очистки графических ресурсов настоятельно не рекомендуется, поскольку это сделает операцию delete выполняться в произвольное время, и неизвестно, будет ли привязан контекст OpenGL при удалении.
Настраиваемые элементы QPainter
QQuickItem предоставляет подкласс QQuickPaintedItem, который позволяет пользователям рендерить содержимое с помощью QPainter.
Предупреждение: Использование QQuickPaintedItem использует косвенную 2D-поверхность для рендеринга содержимого, используя программную растризацию, поэтому рендеринг является двухэтапным процессом. Сначала растрируйте поверхность, затем отобразите поверхность. Использование 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 — это typedef для QFlags<Flag>. Он хранит комбинацию значений Flag с помощью операции OR.
См. также 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().
Документация свойств
Определяет предпочтительную ширину или высоту элемента.
Если ширина или высота не указаны, эффективный размер элемента будет определяться его implicitWidth или implicitHeight.
Однако, если элемент является дочерним элементом макета, макет определит предпочтительный размер элемента, используя его неявный размер. В такой ситуации явные ширина или высота будут проигнорированы.
По умолчанию неявный размер для большинства элементов равен 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 и явное задание ширины влечёт за собой штраф по производительности, так как текст необходимо разложить дважды.
[read-only] activeFocus : const bool
Это свойство только для чтения, указывающее, имеет ли элемент активный фокус.
Если activeFocus имеет значение true, либо этот элемент в данный момент получает ввод с клавиатуры, либо это родительский элемент FocusScope элемента, который в данный момент получает ввод с клавиатуры.
Обычно активный фокус приобретается путём задания focus элементу и содержащим его элементам FocusScope. В следующем примере объекты input и focusScope будут иметь активный фокус, в то время как корневой прямоугольный объект — нет.
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
Это свойство содержит значение, указывающее, хочет ли элемент находиться в цепочке фокусировки по клавише Tab. По умолчанию это значение равно 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) |
[read-only] childrenRect : const QRectF
Это свойство содержит коллективную позицию и размер дочерних элементов элемента.
Это свойство полезно, если вам нужно получить коллективную геометрию дочерних элементов элемента, чтобы правильно определить размер элемента.
Возвращаемая геометрия является локальной для элемента. Например:
Item {
x: 50
y: 100
// prints: QRectF(-10, -20, 30, 40)
Component.onCompleted: print(childrenRect)
Item {
x: -10
y: -20
width: 30
height: 40
}
} Функции доступа:
| QRectF | childrenRect() |
Сигналы уведомления:
| void | childrenRectChanged(const QRectF &) |
clip : bool
Это свойство содержит значение, указывающее, включено ли обрезка. Значение обрезки по умолчанию равно false.
Если обрезка включена, элемент будет обрезать собственное рисование, а также рисование своих дочерних элементов до его ограничивающего прямоугольника. Если вы задаёте обрезку во время операции рисования элемента, не забудьте снова задать её, чтобы предотвратить обрезку остальной части сцены.
Примечание: Обрезка может влиять на производительность рендеринга. См. Обрезку для получения дополнительной информации.
Функции доступа:
| bool | clip() const |
| void | setClip(bool) |
Сигналы уведомления:
| void | clipChanged(bool) |
[since 5.11] containmentMask : QObject*
Это свойство содержит необязательную маску, которая используется в методе contains(), который используется в основном для тестирования попадания каждого QPointerEvent.
По умолчанию contains() вернёт true для любой точки внутри ограничивающего прямоугольника элемента. Но любой QQuickItem или любой QObject, который реализует функцию следующего вида:
Q_INVOKABLE bool contains(const QPointF &point) const;
может использоваться в качестве маски для делегирования тестирования попадания этому объекту.
Примечание: contains() вызывается часто во время доставки событий. Делегирование тестирования попадания другому объекту несколько замедляет его. containmentMask() может вызывать проблемы с производительностью, если метод contains() этого объекта не является эффективным. Если вы реализуете подкласс QQuickItem, вы можете альтернативно переопределить contains().
Это свойство было добавлено в Qt 5.11.
Функции доступа:
| QObject * | containmentMask() const |
| void | setContainmentMask(QObject *mask) |
Сигналы уведомления:
| void | containmentMaskChanged() |
См. также contains().
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.
[bindable] height : qreal
Примечание: Это свойство поддерживает привязки QProperty.
Это свойство содержит высоту этого элемента.
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
Это свойство указывает, отображается ли элемент. По умолчанию значение истинно.
Прямое изменение этого свойства влияет на значение visible дочерних элементов. При установке в false, значения visible всех дочерних элементов также становятся false. При установке в true, значения visible дочерних элементов возвращаются к true, если они явно не были установлены в false.
(Из-за этого поведенческого принципа, использование свойства visible может не иметь ожидаемого эффекта, если привязке свойства требуется реагировать только на явные изменения свойства. В таких случаях предпочтительнее использовать свойство opacity.)
Если это свойство установлено в false, элемент больше не будет получать события мыши, но будет продолжать получать события клавиатуры и сохранит фокус клавиатуры focus, если он был задан. (В отличие от этого, установка свойства enabled в false останавливает как события мыши, так и клавиатуры, а также снимает фокус с элемента.)
Примечание: Значение этого свойства изменяется только при изменении этого свойства или свойства родительского элемента visible. Оно не изменяется, например, если этот элемент выходит за экран или если свойство opacity меняется на 0.
Функции доступа:
| bool | isVisible() const |
| void | setVisible(bool) |
Сигнал нотификатора:
| void | visibleChanged() |
[bindable] width : qreal
Примечание: Это свойство поддерживает привязки QProperty.
Это свойство содержит ширину этого элемента.
[bindable] x : qreal
Примечание: Это свойство поддерживает привязки QProperty.
Определяет положение элемента по оси x относительно родительского элемента.
[bindable] y : qreal
Примечание: Это свойство поддерживает привязки QProperty.
Определяет положение элемента по оси y относительно родительского элемента.
z : qreal
Устанавливает порядок расположения элементов-братьев. По умолчанию порядок расположения равен 0.
Элементы с более высоким значением z выводятся поверх элементов с более низким значением. Элементы с одинаковым значением z выводятся снизу вверх в порядке их появления. Элементы с отрицательным значением z выводятся под содержимым родителя.
Следующий пример демонстрирует различные эффекты порядка расположения.
Одинаковый 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() |
Документация по функциям-членам
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
Возвращает значение, указывающее, принимаются ли события наведения курсора этим элементом.
Значение по умолчанию — ложь.
Если значение ложь, то элемент не получит никаких событий наведения курсора через функции hoverEnterEvent(), hoverMoveEvent() и hoverLeaveEvent().
См. также setAcceptHoverEvents().
[since 5.10] bool QQuickItem::acceptTouchEvents() const
Возвращает значение, указывающее, принимаются ли события касания этим элементом.
Значение по умолчанию — false.
Если значение false, то элемент не получит никаких событий касания через функцию touchEvent().
Эта функция была добавлена в Qt 5.10.
См. также setAcceptTouchEvents().
Qt::MouseButtons QQuickItem::acceptedMouseButtons() const
Возвращает кнопки мыши, принимаемые этим элементом.
Значение по умолчанию — Qt::NoButton; то есть, никакие кнопки мыши не принимаются.
Если элемент не принимает кнопку мыши для определённого события мыши, то событие мыши не будет передано элементу и будет передано следующему элементу в иерархии элементов.
См. также setAcceptedMouseButtons() и acceptTouchEvents().
[invokable] 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 в противном случае.
Примечание: Несмотря на название, эта функция фильтрует все экземпляры QPointerEvent во время доставки всем дочерним элементам (обычно события мыши, касания и планшета). При переопределении этой функции в подклассе рекомендуется писать код обработки событий общего назначения, используя только методы доступа, которые есть в QPointerEvent. В качестве альтернативы, вы можете включить event->type() и/или event->device()->type() для обработки различных типов событий разными способами.
Примечание: Фильтрация — всего лишь один способ распределения ответственности в случае неоднозначности жестов (например, при нажатии, вы не знаете, будет ли пользователь нажимать или перетаскивать). Другой способ — вызвать QPointerEvent::addPassiveGrabber() при нажатии, чтобы пассивно отслеживать ход QEventPoint. В любом случае, элемент или обработчик указателя, который отслеживает, может позже захватить эксклюзивный захват, когда станет ясно, что жест соответствует ожидаемому шаблону.
См. также setFiltersChildMouseEvents().
[override virtual protected] void QQuickItem::classBegin()
Реализует: QQmlParserStatus::classBegin().
Производные классы должны вызвать метод базового класса перед добавлением собственного действия, которое должно быть выполнено при classBegin.
[override virtual protected] void QQuickItem::componentComplete()
Реализует: QQmlParserStatus::componentComplete().
Производные классы должны вызвать метод базового класса перед добавлением собственных действий, которые должны быть выполнены при componentComplete.
[virtual invokable] bool QQuickItem::contains(const QPointF &point) const
Возвращает true если этот элемент содержит point, который находится в локальных координатах; в противном случае возвращает false.
Этот метод может быть переопределён для обработки столкновений точек в элементах с пользовательскими формами. По умолчанию проверяется, находится ли точка внутри containmentMask() (если он установлен) или внутри ограничивающей рамки в противном случае.
Примечание: Этот метод используется для проверки попадания каждой QEventPoint во время доставки событий, поэтому реализация должна быть максимально эффективной.
Примечание: Этот метод может вызываться через метаобъектную систему и из QML. См. Q_INVOKABLE.
QCursor QQuickItem::cursor() const
Возвращает форму курсора для данного элемента.
Курсор мыши примет эту форму, когда он будет над этим элементом, если не установлен курсор-замена. Список предопределённых объектов курсора можно найти в списке предопределённых объектов курсора .
Если форма курсора не установлена, возвращается курсор с формой Qt::ArrowCursor, однако может отображаться другая форма курсора, если перекрывающий элемент имеет действительную форму курсора.
См. также setCursor() и unsetCursor().
[virtual protected] void QQuickItem::dragEnterEvent(QDragEnterEvent *event)
Этот обработчик событий может быть переопределен в подклассе для получения событий drag-enter для элемента. Информация об событии предоставляется параметром event.
События перетаскивания и опускания предоставляются только в том случае, если для данного элемента установлен флаг ItemAcceptsDrops.
Событие принимается по умолчанию, поэтому не нужно явно принимать событие, если вы переопределяете эту функцию. Если вы не принимаете событие, вызовите event->ignore().
См. также Drag и Перетаскивание и опускание.
[virtual protected] void QQuickItem::dragLeaveEvent(QDragLeaveEvent *event)
Этот обработчик событий может быть переопределен в подклассе для получения событий drag-leave для элемента. Информация об событии предоставляется параметром event.
События перетаскивания и опускания предоставляются только в том случае, если для данного элемента установлен флаг ItemAcceptsDrops.
Событие принимается по умолчанию, поэтому не нужно явно принимать событие, если вы переопределяете эту функцию. Если вы не принимаете событие, вызовите event->ignore().
См. также Drag и Перетаскивание и опускание.
[virtual protected] void QQuickItem::dragMoveEvent(QDragMoveEvent *event)
Этот обработчик событий может быть переопределен в подклассе для получения событий drag-move для элемента. Информация об событии предоставляется параметром event.
События перетаскивания и опускания предоставляются только в том случае, если для данного элемента установлен флаг ItemAcceptsDrops.
Событие принимается по умолчанию, поэтому не нужно явно принимать событие, если вы переопределяете эту функцию. Если вы не принимаете событие, вызовите event->ignore().
См. также Drag и Перетаскивание и опускание.
[virtual protected] void QQuickItem::dropEvent(QDropEvent *event)
Этот обработчик событий может быть переопределен в подклассе для получения событий drop для элемента. Информация об событии предоставляется параметром event.
События перетаскивания и опускания предоставляются только в том случае, если для данного элемента установлен флаг ItemAcceptsDrops.
Событие принимается по умолчанию, поэтому не нужно явно принимать событие, если вы переопределяете эту функцию. Если вы не принимаете событие, вызовите event->ignore().
См. также Drag и Перетаскивание и опускание.
[override virtual protected] bool QQuickItem::event(QEvent *ev)
Реализует: QObject::event(QEvent *e).
bool QQuickItem::filtersChildMouseEvents() const
Возвращает значение, указывающее, должны ли события, предназначенные для дочерних элементов этого элемента, фильтроваться через этот элемент.
Если и у данного элемента, и у дочернего элемента включено acceptTouchEvents() true, то при взаимодействии с прикосновением, этот элемент отфильтрует событие касания. Но если ни данный элемент, ни дочерний элемент не могут обрабатывать события касания, childMouseEventFilter() будет вызван с синтезированным событием мыши.
См. также setFiltersChildMouseEvents() и childMouseEventFilter().
QQuickItem::Flags QQuickItem::flags() const
Возвращает флаги элемента для этого элемента.
См. также setFlags() и setFlag().
[virtual protected] void QQuickItem::focusInEvent(QFocusEvent *)
Этот обработчик событий может быть переопределен в подклассе для получения событий focus-in для элемента. Информация об событии предоставляется параметром event.
Событие принимается по умолчанию, поэтому не нужно явно принимать событие, если вы переопределяете эту функцию. Если вы не принимаете событие, вызовите event->ignore().
Если вы переопределяете эту функцию, вам следует вызвать реализацию базового класса.
[virtual protected] void QQuickItem::focusOutEvent(QFocusEvent *)
Этот обработчик событий может быть переопределен в подклассе для получения событий focus-out для элемента. Информация об событии предоставляется параметром event.
Событие принимается по умолчанию, поэтому не нужно явно принимать событие, если вы переопределяете эту функцию. Если вы не принимаете событие, вызовите event->ignore().
[invokable] void QQuickItem::forceActiveFocus()
Принудительно устанавливает активный фокус на элемент.
Этот метод устанавливает фокус на элемент и гарантирует, что все родительские объекты FocusScope в иерархии объектов также получают focus.
Причина изменения фокуса будет Qt::OtherFocusReason. Используйте перегруженный метод для указания причины изменения фокуса, чтобы обеспечить лучшее его обработку.
Примечание: Этот метод может вызываться через метаобъектную систему и из QML. См. Q_INVOKABLE.
См. также activeFocus.
[invokable, since 5.1] void QQuickItem::forceActiveFocus(Qt::FocusReason reason)
Это перегруженный метод.
Принудительно устанавливает активный фокус на элемент с заданной причиной reason.
Этот метод устанавливает фокус на элемент и гарантирует, что все родительские объекты FocusScope в иерархии объектов также получают focus.
Примечание: Этот метод может вызываться через метаобъектную систему и из QML. См. Q_INVOKABLE.
Этот метод был добавлен в Qt 5.1.
См. также activeFocus и Qt::FocusReason.
[virtual protected, since 6.0] void QQuickItem::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry)
Этот метод вызывается для обработки изменений геометрии этого элемента от oldGeometry до newGeometry. Если две геометрии одинаковы, ничего не происходит.
Производные классы должны вызвать метод базового класса в своей реализации.
Этот метод был добавлен в Qt 6.0.
QSharedPointer<QQuickItemGrabResult> QQuickItem::grabToImage(const QSize &targetSize = QSize())
Захватывает элемент в изображение в оперативной памяти.
Захват происходит асинхронно, и сигнал QQuickItemGrabResult::ready() генерируется, когда захват завершен.
Используйте targetSize для задания размера целевого изображения. По умолчанию результат будет иметь такой же размер, как и элемент.
Если захват не может быть инициирован, функция возвращает null.
Примечание: Эта функция отобразит элемент на скрытом поверхностном слое и скопирует этот слой из памяти графического процессора в память центрального процессора, что может быть довольно затратно. Для «живого» предварительного просмотра используйте слои или ShaderEffectSource.
См. также QQuickWindow::grabWindow().
[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().
[since 5.7] 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().
[since 5.7] QPointF QQuickItem::mapFromGlobal(const QPointF &point) const
Преобразует заданную точку point в глобальной системе координат экрана в эквивалентную точку в системе координат этого элемента и возвращает преобразованную координату.
В преобразовании используются следующие свойства элемента: x, y, scale, rotation, transformOrigin и transform.
Например, это может быть полезно для добавления всплывающего окна к компоненту Qt Quick.
Примечание: Расположение окна выполняется менеджером окон, и это значение обрабатывается только как подсказка. Поэтому фактическое положение окна может отличаться от ожидаемого.
Примечание: Если этот элемент находится в подсцене, например, нанесён на 3D-объект Model, в это преобразование включено отображение UV, так что оно действительно преобразует координаты экрана в координаты этого элемента, если point действительно находится в пределах границ этого элемента. Другие функции преобразования пока не работают таким образом.
Эта функция была введена в 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, это преобразует point из системы координат сцены.
См. также Концепции - Визуальные координаты в 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.
QRectF QQuickItem::mapRectToItem(const QQuickItem *item, const QRectF &rect) const
Преобразует заданный прямоугольник rect в системе координат текущего элемента в эквивалентную прямоугольную область в системе координат элемента item и возвращает преобразованный прямоугольник.
При преобразовании используются следующие свойства элемента: x, y, scale, rotation, transformOrigin и transform.
Если item равен 0, преобразование выполняется в систему координат сцены.
См. также Концепции — Визуальные координаты в Qt Quick.
QRectF QQuickItem::mapRectToScene(const QRectF &rect) const
Преобразует заданный прямоугольник rect в системе координат текущего элемента в эквивалентную прямоугольную область в системе координат сцены и возвращает преобразованный прямоугольник.
При преобразовании используются следующие свойства элемента: x, y, scale, rotation, transformOrigin и transform.
См. также Концепции — Визуальные координаты в Qt Quick.
[since 5.7] QPointF QQuickItem::mapToGlobal(const QPointF &point) const
Преобразует заданную точку point в системе координат текущего элемента в эквивалентную точку в глобальной системе координат экрана и возвращает преобразованную координату.
При преобразовании используются следующие свойства элемента: x, y, scale, rotation, transformOrigin и transform.
Например, это может быть полезно для добавления всплывающего окна к компоненту Qt Quick.
Примечание: Размещение окна выполняется менеджером окон, и это значение используется только как подсказка. Поэтому фактическое положение окна может отличаться от ожидаемого.
Функция была добавлена в Qt 5.7.
См. также Концепции — Визуальные координаты в Qt Quick.
QPointF QQuickItem::mapToItem(const QQuickItem *item, const QPointF &point) const
Преобразует заданную точку point в системе координат текущего элемента в эквивалентную точку в системе координат элемента item и возвращает преобразованную координату.
При преобразовании используются следующие свойства элемента: x, y, scale, rotation, transformOrigin и transform.
Если item равен 0, преобразование выполняется в систему координат сцены.
См. также Концепции — Визуальные координаты в Qt Quick.
QPointF QQuickItem::mapToScene(const QPointF &point) const
Преобразует заданную точку point в системе координат текущего элемента в эквивалентную точку в системе координат сцены и возвращает преобразованную координату.
При преобразовании используются следующие свойства элемента: x, y, scale, rotation, transformOrigin и transform.
См. также Концепции — Визуальные координаты в Qt Quick.
[virtual protected] void QQuickItem::mouseDoubleClickEvent(QMouseEvent *event)
Обработчик событий может быть переопределен в подклассе для получения событий двойного щелчка мыши для элемента. Информация о событии предоставляется параметром event.
Событие по умолчанию обрабатывается, поэтому явное принятие события при переопределении функции не требуется. Если вы не хотите обрабатывать событие, вызовите event->ignore().
[virtual protected] void QQuickItem::mouseMoveEvent(QMouseEvent *event)
Обработчик событий может быть переопределен в подклассе для получения событий перемещения мыши для элемента. Информация о событии предоставляется параметром event.
Для получения событий перемещения мыши предыдущее событие нажатия мыши должно быть принято (например, путём переопределения mousePressEvent() ), и acceptedMouseButtons() должно возвращать соответствующую кнопку мыши.
Событие по умолчанию обрабатывается, поэтому явное принятие события при переопределении функции не требуется. Если вы не хотите обрабатывать событие, вызовите event->ignore().
[virtual protected] void QQuickItem::mousePressEvent(QMouseEvent *event)
Обработчик событий может быть переопределен в подклассе для получения событий нажатия мыши для элемента. Информация о событии предоставляется параметром event.
Для получения событий нажатия мыши acceptedMouseButtons() должно возвращать соответствующую кнопку мыши.
Событие по умолчанию обрабатывается, поэтому явное принятие события при переопределении функции не требуется. Если вы не хотите обрабатывать событие, вызовите event->ignore().
[virtual protected] void QQuickItem::mouseReleaseEvent(QMouseEvent *event)
Обработчик событий может быть переопределен в подклассе для получения событий отпускания мыши для элемента. Информация о событии предоставляется параметром event.
Для получения событий отпускания мыши предыдущее событие нажатия мыши должно быть принято (например, путём переопределения mousePressEvent() ), и acceptedMouseButtons() должно возвращать соответствующую кнопку мыши.
Событие по умолчанию обрабатывается, поэтому явное принятие события при переопределении функции не требуется. Если вы не хотите обрабатывать событие, вызовите event->ignore().
[virtual protected] void QQuickItem::mouseUngrabEvent()
Этот обработчик событий может быть переопределен в подклассе для получения уведомления о событии отпускания захвата мыши этим элементом.
[invokable] 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().
[since 5.10] void QQuickItem::setAcceptTouchEvents(bool enabled)
Если enabled имеет значение true, это устанавливает элемент для приема событий касания; в противном случае события касания не принимаются этим элементом.
Этот метод был введён в Qt 5.10.
См. также acceptTouchEvents().
void QQuickItem::setAcceptedMouseButtons(Qt::MouseButtons buttons)
Устанавливает принимаемые этим элементом кнопки мыши на buttons.
Примечание: В Qt 5 вызов setAcceptedMouseButtons() неявно приводил к тому, что элемент получал события касания, а также события мыши; но было рекомендовано вызывать setAcceptTouchEvents() для их подписки. В Qt 6 необходимо вызывать setAcceptTouchEvents(), чтобы продолжать получать их.
См. также 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().
[since 5.10] void QQuickItem::setSize(const QSizeF &size)
Устанавливает размер элемента на size. Этот метод сохраняет любые существующие привязки к ширине и высоте; таким образом, любое изменение, которое приводит к повторному выполнению привязки, перепишет установленные значения.
Этот метод был введён в Qt 5.10.
См. также size, setWidth и setHeight.
[since 5.10] 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::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() или добавлению и удалению узлов, то реализация может решить не перерисовывать сцену, так как визуальный результат будет идентичным.
Предупреждение: Крайне важно, чтобы операции с графикой и взаимодействие с деревом сцены происходили исключительно в потоке отрисовки, в основном во время вызова QQuickItem::updatePaintNode(). Лучшее правило — использовать только классы с префиксом «QSG» внутри функции QQuickItem::updatePaintNode().
Предупреждение: Эта функция вызывается в потоке отрисовки. Это означает, что все QObjects или локальное хранилище потока, созданные в нём, будут иметь привязку к потоку отрисовки, поэтому будьте осторожны, выполняя действия, отличные от отрисовки в этой функции. Точно так же сигналы будут испускаться в потоке отрисовки и, следовательно, часто будут доставляться через очереди соединений.
Примечание: Все классы с префиксом QSG должны использоваться только в потоке отрисовки дерева сцены. См. Дерево сцены и отрисовка для получения дополнительной информации.
См. также QSGMaterial, 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
Возвращает, была ли явно задана ширина свойства.
QQuickWindow *QQuickItem::window() const
Возвращает окно, в котором отображается этот элемент.
У элемента нет окна, пока он не назначен в сцену. Сигнал windowChanged() предоставляет уведомление как при входе элемента в сцену, так и при его удалении из сцены.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qquickitem.html