Тип QML PointerDeviceHandler
Абстрактный обработчик событий указателя с ограничениями, специфичными для устройства. Подробнее...
| Заявление импорта: | import QtQuick 2.14 |
| С момента: | Qt 5.10 |
| Наследует: | |
| Наследуется от: |
Свойства
- acceptedButtons : flags
- acceptedDevices : flags
- acceptedModifiers : flags
- acceptedPointerTypes : flags
- active : bool
- enabled : bool
- grabPermissions : flags
- margin : real
- parent : Item
- target : Item
Сигналы
- canceled(point)
- grabChanged(transition, EventPoint point)
Подробное описание
Промежуточный класс (не зарегистрированный как тип QML) для обработчиков, которые позволяют фильтрацию по типу устройства, типу указателя или модификаторам клавиатуры.
Документация свойств
acceptedButtons : flags
Кнопки мыши, которые могут активировать этот обработчик Pointer Handler.
По умолчанию это свойство установлено в Qt.LeftButton. Оно может быть установлено в комбинацию кнопок мыши, и будет игнорировать события других кнопок.
Например, элемент управления может реагировать на левые и правые щелчки по-разному, с двумя обработчиками:
Item {
TapHandler {
onTapped: console.log("left clicked")
}
TapHandler {
acceptedButtons: Qt.RightButton
onTapped: console.log("right clicked")
}
} Примечание: Нажатие на сенсорный экран или нажатие стилусом на графический планшет имитирует щелчок левой кнопкой мыши. Это поведение может быть изменено с помощью acceptedDevices или acceptedPointerTypes.
acceptedDevices : flags
Типы указательных устройств, которые могут активировать этот обработчик Pointer Handler.
По умолчанию это свойство установлено в 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 с помощью аргумента командной строки). Должна быть нажата клавиша переключения режимов на клавиатуре. |
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 Handler.
По умолчанию это свойство установлено в 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
Это значение истинно всякий раз, когда этот обработчик ввода взял на себя полную ответственность за обработку одного или нескольких 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 был масштабирован до очень малого размера, жесты pinch всё ещё работали. Либо, если кнопка, основанная на TapHandler, расположена около края экрана, это можно использовать для соблюдения закона Фиттса: реагировать на щелчки мышью на краю экрана, даже если кнопка визуально отстоят от края на несколько пикселей.
Значение по умолчанию 0.
[только для чтения] parent : Item
Элемент (Item), являющийся областью действия обработчика; Элемент, в котором он был объявлен. Обработчик будет обрабатывать события от имени этого Элемента, что означает, что событие указателя актуально, если хотя бы одна из его точек событий находится внутри области Элемента. Изначально target() совпадает, но его можно переназначить.
См. также target и QObject::parent().
target : Item
Элемент (Item), который будет обрабатываться этим обработчиком.
По умолчанию он совпадает с parent — Элементом, в котором объявлен обработчик. Однако иногда бывает полезно установить target на другой Элемент, чтобы обрабатывать события в одном элементе, но управлять другим; или чтобы null, чтобы отключить стандартное поведение и сделать что-то другое вместо этого.
Документация сигналов
canceled(point)
Если этот обработчик уже захватил указанную 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-pointerdevicehandler.html