Класс QQuickItem
Класс QQuickItem предоставляет самые базовые визуальные элементы в Qt Quick. Подробнее...
| Заголовок: | #include <QQuickItem> |
| 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) |
| 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().
Документация свойств
Определяет естественную ширину или высоту элемента, если не заданы ширина или высота.
По умолчанию неявный размер большинства элементов равен 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 и явное задание ширины приводит к снижению производительности, так как текст должен быть выведен дважды.
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) |
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
}
}
} В целях этого свойства вся сцена предполагается как FocusScope. Практически это означает, что следующий 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() |
См. также Преобразование и Поворот.
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. Оно не меняется, например, если этот элемент перемещается за пределы экрана или если свойство прозрачность изменяется на 0.
Функции доступа:
| bool | isVisible() const |
| void | setVisible(bool) |
Сигнал уведомления:
| void | visibleChanged() |
См. также прозрачность и enabled.
ширина : 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() |
Документация по членам-функциям
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().
См. также 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
Возвращает значение, указывающее, должны ли события мыши и касания дочерних элементов этого элемента фильтроваться через этот элемент.
См. также 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().
void QQuickItem::forceActiveFocus()
Принудительно устанавливает активный фокус на элемент.
Этот метод устанавливает фокус на элемент и гарантирует, что все родительские объекты FocusScope в иерархии объектов также получат фокус.
Причина изменения фокуса будет Qt::OtherFocusReason. Используйте перегруженный метод для указания причины изменения фокуса, чтобы обеспечить лучшее управление изменением фокуса.
Примечание: Эта функция может вызываться через метаобъектную систему и из QML. См. Q_INVOKABLE.
См. также activeFocus.
void QQuickItem::forceActiveFocus(Qt::FocusReason reason)
Это перегруженная функция.
Принудительно устанавливает активный фокус на элемент с указанной причиной reason.
Этот метод устанавливает фокус на элемент и гарантирует, что все родительские объекты FocusScope в иерархии объектов также получат фокус.
Примечание: Эта функция может вызываться через метаобъектную систему и из QML. См. Q_INVOKABLE.
Эта функция была добавлена в Qt 5.1.
См. также 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.
Примечание: Эта функция будет рендерить элемент на дополнительной поверхности и копировать эту поверхность из памяти графического процессора в память центрального процессора, что может быть довольно дорогостоящим. Для "живого" предварительного просмотра используйте слои или 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)
Этот обработчик событий может быть переопределён в подклассе для получения событий hover-enter для элемента. Информация о событии предоставляется параметром 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, это преобразует 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, это преобразует rect из системы координат сцены.
См. также Концепции - Визуальные координаты в Qt Quick.
QRectF QQuickItem::mapRectFromScene(const QRectF &rect) const
Преобразует заданный прямоугольник rect в системе координат сцены в эквивалентную прямоугольную область в системе координат этого элемента и возвращает преобразованный прямоугольник.
В отображении используются следующие свойства элемента: x, y, масштаб, вращение, transformOrigin и transform.
См. также Концепции — Визуальные координаты в Qt Quick.
QRectF QQuickItem::mapRectToItem(const QQuickItem *item, const QRectF &rect) const
Преобразует заданный прямоугольник rect в системе координат этого элемента в эквивалентную прямоугольную область в системе координат элемента item и возвращает значение преобразованного прямоугольника.
В отображении используются следующие свойства элемента: x, y, масштаб, вращение, transformOrigin и transform.
Если item равен 0, это преобразует rect в систему координат сцены.
См. также Концепции — Визуальные координаты в Qt Quick.
QRectF QQuickItem::mapRectToScene(const QRectF &rect) const
Преобразует заданный прямоугольник rect в системе координат этого элемента в эквивалентную прямоугольную область в системе координат сцены и возвращает значение преобразованного прямоугольника.
В отображении используются следующие свойства элемента: x, y, масштаб, вращение, transformOrigin и transform.
См. также Концепции — Визуальные координаты в Qt Quick.
QPointF QQuickItem::mapToGlobal(const QPointF &point) const
Преобразует заданную точку point в системе координат этого элемента в эквивалентную точку в глобальной системе координат экрана и возвращает преобразованные координаты.
В отображении используются следующие свойства элемента: x, y, масштаб, вращение, transformOrigin и transform.
Например, это может быть полезно для добавления всплывающего окна к компоненту Qt Quick.
Примечание: Размещение окна выполняется менеджером окон, и это значение рассматривается только как подсказка. Таким образом, фактическое положение окна может отличаться от ожидаемого.
Функция была введена в Qt 5.7.
См. также Концепции — Визуальные координаты в Qt Quick.
QPointF QQuickItem::mapToItem(const QQuickItem *item, const QPointF &point) const
Преобразует заданную точку point в системе координат этого элемента в эквивалентную точку в системе координат элемента item и возвращает преобразованные координаты.
В отображении используются следующие свойства элемента: x, y, масштаб, вращение, transformOrigin и transform.
Если item равен 0, это преобразует point в систему координат сцены.
См. также Концепции — Визуальные координаты в Qt Quick.
QPointF QQuickItem::mapToScene(const QPointF &point) const
Преобразует заданную точку point в системе координат этого элемента в эквивалентную точку в системе координат сцены и возвращает преобразованные координаты.
В отображении используются следующие свойства элемента: x, y, масштаб, вращение, 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()
Обработчик этого события может быть переопределён в подклассе для получения уведомления о событии отпускания захвата мыши на этом элементе.
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().
Это происходит, когда элемент собирается быть удалён из окна, в котором он ранее отображался. Элемент гарантированно имеет window, когда вызывается функция.
Функция вызывается в потоке графического интерфейса, а состояние потока отрисовки, если он используется, неизвестно. Объекты не должны удаляться непосредственно, а вместо этого планироваться для очистки с помощью 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 должен быть дочерним элементом этого элемента; то есть, они должны иметь одного и того же непосредственного parent.
См. также Концепции — Визуальный родитель в Qt Quick.
void QQuickItem::stackBefore(const QQuickItem *sibling)
Перемещает указанный элемент sibling в индекс перед этим элементом в списке дочерних элементов. Порядок дочерних элементов влияет как на порядок визуального расположения, так и на порядок навигации по табу.
Предполагая, что значения z обоих элементов одинаковы, это приведет к тому, что sibling будет отображаться выше этого элемента.
Если у обоих элементов значение activeFocusOnTab установлено в true, это также изменит порядок фокуса по табу, и sibling получит фокус после этого элемента.
Указанный sibling должен быть дочерним элементом этого элемента; то есть, они должны иметь одного и того же непосредственного parent.
См. также Концепции — Визуальный родитель в 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 предоставляет указатель на связанный с этим QQuickItem QSGTransformNode.
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(), схема сцены планирует событие компоновки для этого элемента. Когда схема сцены готова отобразить этот элемент, она вызывает 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-5.15/qquickitem.html