Тип QML SinglePointHandler
Абстрактный обработчик событий Pointer для одного касания. Подробнее...
| Оператор импорта: | import QtQuick 2.14 |
| Наследует: | |
| Наследуется от: |
Свойства
- acceptedButtons : flags
- acceptedDevices : flags
- acceptedModifiers : flags
- acceptedPointerTypes : flags
- active : bool
- enabled : bool
- grabPermissions : flags
- margin : real
- parent : Item
- point : HandlerPoint
- target : Item
Сигналы
- canceled(point)
- grabChanged(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")
}
} Если вы установите acceptedModifiers в комбинацию клавиш-модификаторов, это означает, что все эти модификаторы должны быть нажаты, чтобы активировать обработчик:
Item {
TapHandler {
acceptedModifiers: Qt.ControlModifier | Qt.AltModifier | Qt.ShiftModifier
onTapped: console.log("control-alt-shift-tapped")
}
} Доступные модификаторы:
| Константа | Описание |
|---|---|
NoModifier |
Модификаторы клавиш не допускаются. |
ShiftModifier |
Должна быть нажата клавиша Shift на клавиатуре. |
ControlModifier |
Должна быть нажата клавиша Ctrl на клавиатуре. |
AltModifier |
Должна быть нажата клавиша Alt на клавиатуре. |
MetaModifier |
Должна быть нажата клавиша Meta на клавиатуре. |
KeypadModifier |
Должна быть нажата клавиша на дополнительной клавиатуре. |
GroupSwitchModifier |
Только X11 (если не активировано в Windows с помощью параметра командной строки). Должна быть нажата клавиша Mode_switch на клавиатуре. |
KeyboardModifierMask |
Обработчик не заботится о нажатых модификаторах. |
Если вам нужно поведение, более сложное, чем то, которое можно получить с помощью сочетаний нескольких обработчиков с несколькими флагами модификаторов, вы можете проверить модификаторы в коде JavaScript:
Item {
TapHandler {
onTapped:
switch (point.modifiers) {
case Qt.ControlModifier | Qt.AltModifier:
console.log("CTRL+ALT");
break;
case Qt.ControlModifier | Qt.AltModifier | Qt.MetaModifier:
console.log("CTRL+META+ALT");
break;
default:
console.log("other modifiers", point.modifiers);
break;
}
}
} См. также Qt::KeyboardModifier.
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
Это значение истинно, когда этот обработчик ввода взял на себя полную ответственность за обработку одной или нескольких EventPoint, успешно захватил эксклюзивный контроль над этими точками. Это означает, что он сохраняет свои свойства, обновляемые в соответствии с перемещениями этих EventPoint, и активно манипулирует своим элементом 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, что позволяет большинству сценариев захвата, но избегает, например, конфликтов между двумя PinchHandler за одни и те же точки касания.
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(point)
Если этот обработчик уже захватил указанную точку, этот сигнал излучается, когда захват украден другим обработчиком указателя или элементом.
grabChanged(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.14/qml-qtquick-singlepointhandler.html