Тип QML SinglePointHandler
Абстрактный обработчик событий Pointer для одной точки. Подробнее...
| Оператор импорта: | import QtQuick 2.12 |
| Наследуется от: | |
| Наследует: |
Свойства
- acceptedButtons : flags
- acceptedDevices : flags
- acceptedModifiers : flags
- acceptedPointerTypes : flags
- active : bool
- enabled : bool
- grabPermissions : flags
- margin : real
- parent : Item
- point : HandlerPoint
- target : Item
Сигналы
- canceled(EventPoint point)
- grabChanged(GrabTransition transition, EventPoint point)
Подробное описание
Промежуточный класс (не зарегистрированный как тип QML) для наиболее распространённых обработчиков: тех, которые ожидают только одну точку. wantsPointerEvent() выберет первую точку, которая находится внутри элемента target, и вернёт true до тех пор, пока событие содержит эту точку. Переопределите handleEventPoint(), чтобы реализовать обработчик для одной точки.
Документация по свойствам
acceptedButtons : flags
Кнопки мыши, которые могут активировать этот обработчик Pointer.
По умолчанию это свойство установлено в Qt.LeftButton. Оно может быть установлено в логическое ИЛИ комбинацию кнопок мыши и будет игнорировать события от других кнопок.
Например, элемент управления может реагировать на щелчки левой и правой кнопкой мыши по-разному, с помощью двух обработчиков:
Item {
TapHandler {
onTapped: console.log("left clicked")
}
TapHandler {
acceptedButtons: Qt.RightButton
onTapped: console.log("right clicked")
}
} Примечание: Нажатие на сенсорном экране или нажатие стилусом на графическом планшете эмулирует щелчок левой кнопкой мыши. Это поведение можно изменить с помощью acceptedDevices или acceptedPointerTypes.
acceptedDevices : flags
Типы указательных устройств, которые могут активировать этот обработчик Pointer.
По умолчанию это свойство установлено в PointerDevice.AllDevices. Если вы установите его в логическое ИЛИ комбинацию типов устройств, оно будет игнорировать события от несовпадающих устройств.
Например, элемент управления может реагировать на щелчки мышью и стилусом одним способом, а на касания на сенсорном экране — другим, с помощью двух обработчиков:
Item {
TapHandler {
acceptedDevices: PointerDevice.Mouse | PointerDevice.Stylus
onTapped: console.log("clicked")
}
TapHandler {
acceptedDevices: PointerDevice.TouchScreen
onTapped: console.log("tapped")
}
} acceptedModifiers : flags
Если это свойство установлено, для реакции на события указателя потребуются нажатые клавиши модификаторов, в противном случае они будут игнорироваться.
Если это свойство установлено в Qt.KeyboardModifierMask (значение по умолчанию), обработчик PointerHandler игнорирует клавиши модификаторов.
Например, элемент Item может иметь два обработчика одного типа, один из которых включён только в том случае, если нажаты необходимые клавиши модификаторов:
Item {
TapHandler {
acceptedModifiers: Qt.ControlModifier
onTapped: console.log("control-tapped")
}
TapHandler {
acceptedModifiers: Qt.NoModifier
onTapped: console.log("tapped")
}
} acceptedPointerTypes : flags
Типы указательных устройств (палец, стилус, ластик и т. д.), которые могут активировать этот обработчик Pointer.
По умолчанию это свойство установлено в PointerDevice.AllPointerTypes. Если вы установите его в логическое ИЛИ комбинацию типов устройств, оно будет игнорировать события от несовпадающих устройств.
Например, элемент управления может реагировать на щелчки мышью, касаниями и стилусом каким-то образом, но удалить себя при нажатии инструментом ластика на графическом планшете с помощью двух обработчиков:
Rectangle {
id: rect
TapHandler {
acceptedPointerTypes: PointerDevice.GenericPointer | PointerDevice.Finger | PointerDevice.Pen
onTapped: console.log("clicked")
}
TapHandler {
acceptedPointerTypes: PointerDevice.Eraser
onTapped: rect.destroy()
}
} [только для чтения] active : bool
Это значение true, когда этот обработчик ввода взял на себя полную ответственность за обработку одной или нескольких EventPoints, успешно получив эксклюзивный захват этих точек. Это означает, что он обновляет свои свойства в соответствии с перемещениями этих EventPoints и активно управляет своим target (если таковой имеется).
enabled : bool
Если PointerHandler отключён, он будет отклонять все события, и не будут генерироваться никакие сигналы.
grabPermissions : flags
Это свойство определяет разрешения, когда логика этого обработчика принимает эксклюзивный захват или когда его просят одобрить захват или отмену захвата другим обработчиком.
| Константа | Описание |
|---|---|
PointerHandler.TakeOverForbidden |
Этот обработчик не получает и не предоставляет разрешение на захват ни для какого типа элемента или обработчика. |
PointerHandler.CanTakeOverFromHandlersOfSameType |
Этот обработчик может получить эксклюзивный захват от другого обработчика того же класса. |
PointerHandler.CanTakeOverFromHandlersOfDifferentType |
Этот обработчик может получить эксклюзивный захват от любого обработчика. |
PointerHandler.CanTakeOverFromAnything |
Этот обработчик может получить эксклюзивный захват от любого типа элемента или обработчика. |
PointerHandler.ApprovesTakeOverByHandlersOfSameType |
Этот обработчик предоставляет разрешение другому обработчику того же класса на получение захвата. |
PointerHandler.ApprovesTakeOverByHandlersOfDifferentType |
Этот обработчик предоставляет разрешение любому обработчику на получение захвата. |
PointerHandler.ApprovesTakeOverByItems |
Этот обработчик предоставляет разрешение любому элементу на получение захвата. |
PointerHandler.ApprovesCancellation |
Этот обработчик позволит установить захват в null. |
PointerHandler.ApprovesTakeOverByAnything |
Этот обработчик предоставляет разрешение любому элементу или обработчику на получение захвата. |
По умолчанию PointerHandler.CanTakeOverFromItems | PointerHandler.CanTakeOverFromHandlersOfDifferentType | PointerHandler.ApprovesTakeOverByAnything, что разрешает большинство сценариев захвата, но избегает, например, столкновения двух PinchHandlers за те же точки касания.
margin : real
Отступ за пределами границ родительского элемента parent, в пределах которого точка события может активировать этот обработчик. Например, в PinchHandler, где target также является parent, полезно установить это значение на расстояние, по крайней мере, наполовину ширины типичного пальца пользователя, так что если parent был уменьшен до очень маленького размера, жесты щипка все ещё возможны. Или, если кнопка на основе TapHandler размещена вблизи края экрана, она может использоваться для соответствия закону Фиттса: реагировать на щелчки мышью на краю экрана, даже если кнопка визуально отстоит от края на несколько пикселей.
Значение по умолчанию — 0.
[только для чтения] parent : Item
Элемент Item, который является областью действия обработчика; элемент, в котором он был объявлен. Обработчик будет обрабатывать события от имени этого элемента, что означает, что событие указателя актуально, если по крайней мере одна из его точек событий находится внутри элемента. Изначально target() является тем же, но его можно переназначить.
См. также target и QObject::parent().
[только для чтения] point : HandlerPoint
Точка события, которая обрабатывается в данный момент. Когда точка не обрабатывается, этот объект сбрасывается до значений по умолчанию (все координаты равны 0).
target : Item
Элемент Item, которым будет управлять этот обработчик.
По умолчанию он такой же, как parent, элемент, в котором объявлен обработчик. Однако иногда бывает полезно установить target на другой элемент, чтобы обрабатывать события в одном элементе, но управлять другим; или null, чтобы отключить стандартное поведение и сделать что-то другое вместо него.
Документация по сигналам
canceled(EventPoint point)
Если этот обработчик уже захватил указанную point, этот сигнал отправляется, когда захват отнят другим обработчиком Pointer или элементом.
grabChanged(GrabTransition transition, EventPoint point)
Этот сигнал испускается, когда захват изменился каким-либо образом, что имеет отношение к этому обработчику.
transition (глагол) указывает, что произошло. point (объект) — это точка, которая была захвачена или отжата.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qml-qtquick-singlepointhandler.html