Тип QML MultiPointHandler
Абстрактный обработчик для событий Pointer Events с несколькими точками. Подробнее...
| Заявление импорта: | import QtQuick |
| С версии: | Qt 5.10 |
| Наследует: | |
| Наследуется от: |
Свойства
- acceptedButtons : flags
- acceptedDevices : flags
- acceptedModifiers : flags
- acceptedPointerTypes : flags
- active : bool
- centroid : QtQuick::HandlerPoint
- cursorShape : Qt::CursorShape
- dragThreshold : int
- enabled : bool
- grabPermissions : flags
- margin : real
- maximumPointCount : int
- minimumPointCount : int
- parent : Item
- target : Item
Сигналы
- canceled(EventPoint point)
- grabChanged(GrabTransition 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 с помощью аргумента командной строки). Должна быть нажата клавиша 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 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
Это значение истинно всякий раз, когда этот обработчик Input Handler взял на себя полную ответственность за обработку одной или нескольких точек EventPoint, успешно захватив эксклюзивный захват этих точек. Это означает, что он сохраняет свои свойства, обновляя их в соответствии с перемещениями этих точек Event Point и активно манипулируя своим target (если таковой имеется).
[только для чтения] centroid : QtQuick::HandlerPoint
Точка, расположенная точно посередине текущих нажатых точек касания. Если нажата только одна точка, она такая же, как и эта точка. Обработчик, имеющий target, обычно преобразует его относительно этой точки.
[с версии 5.15] cursorShape : Qt::CursorShape
Это свойство содержит форму курсора, которая будет отображаться всякий раз, когда курсор находится над элементом parent, в то время как active равно true.
Доступные формы курсора:
- Qt.ArrowCursor
- Qt.UpArrowCursor
- Qt.CrossCursor
- Qt.WaitCursor
- Qt.IBeamCursor
- Qt.SizeVerCursor
- Qt.SizeHorCursor
- Qt.SizeBDiagCursor
- Qt.SizeFDiagCursor
- Qt.SizeAllCursor
- Qt.BlankCursor
- Qt.SplitVCursor
- Qt.SplitHCursor
- Qt.PointingHandCursor
- Qt.ForbiddenCursor
- Qt.WhatsThisCursor
- Qt.BusyCursor
- Qt.OpenHandCursor
- Qt.ClosedHandCursor
- Qt.DragCopyCursor
- Qt.DragMoveCursor
- Qt.DragLinkCursor
Значение по умолчанию не задано, что позволяет отображать курсор cursor элемента parent. Это свойство можно сбросить до исходного состояния, установив его в undefined.
Примечание: Когда это свойство не установлено или установлено в undefined, если вы прочтёте значение, оно вернёт Qt.ArrowCursor.
Это свойство было введено в Qt 5.15.
См. также Qt::CursorShape, QQuickItem::cursor() и HoverHandler::cursorShape.
[с версии 5.15] dragThreshold : int
Расстояние в пикселях, на которое пользователь должен перетащить точку события, чтобы оно обрабатывалось как жест перетаскивания.
Значение по умолчанию зависит от платформы и разрешения экрана. Его можно сбросить до значения по умолчанию, установив его в undefined. Поведение при начале жеста перетаскивания различается в разных обработчиках.
Это свойство было введено в Qt 5.15.
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
Отступ за пределами границ элемента родитель, в пределах которого точка события может активировать этот обработчик. Например, на обработчике PinchHandler, где target также является parent, полезно установить это значение, по крайней мере, на половину ширины типичного пальца пользователя, чтобы в случае, если parent был масштабирован до очень малого размера, жесты pinch все еще были возможны. Или, если кнопка на основе TapHandler расположена у края экрана, она может использоваться для соответствия закону Фиттса: реагировать на щелчки мыши на краю экрана, даже если кнопка визуально отстоит от края на несколько пикселей.
Значение по умолчанию равно 0.
maximumPointCount : int
Максимальное количество точек касания, которые может использовать этот обработчик.
Если количество точек касания, контактирующих с родителем, больше, то необходимое количество точек будет выбрано в порядке их нажатия, а оставшиеся точки будут проигнорированы.
Любые проигнорированные точки могут активировать другие обработчики ввода, у которых есть разные ограничения, на том же элементе или на других элементах.
Значение по умолчанию такое же, как у minimumPointCount.
minimumPointCount : int
Минимальное количество точек касания, необходимое для активации этого обработчика.
Если количество точек касания, контактирующих с родителем, меньше, они будут проигнорированы.
Любые проигнорированные точки могут активировать другие обработчики ввода, у которых есть разные ограничения, на том же элементе или на других элементах.
Значение по умолчанию равно 2.
[только для чтения] parent : Item
Элемент Item, который является областью действия обработчика; элемент, в котором он был объявлен. Обработчик будет обрабатывать события от имени этого элемента, что означает, что событие указателя актуально, если хотя бы одна из его точек событий находится внутри внутренней области элемента. Изначально target() такое же, но его можно переназначить.
Примечание: Когда обработчик объявлен в объекте QtQuick3D.Model, родитель не является элементом, поэтому это свойство null.
См. также target и QObject::parent().
target : Item
Элемент Item, который будет управлять этим обработчиком.
По умолчанию он такой же, как родитель, элемент, в котором объявлен обработчик. Однако иногда бывает полезно установить целевой элемент на другой элемент, чтобы обрабатывать события внутри одного элемента, но управлять другим; или null, чтобы отключить стандартное поведение и сделать что-то другое вместо этого.
Документация по сигналам
canceled(EventPoint point)
Если этот обработчик уже захватил указанную point, этот сигнал испускается, когда захват украден другим обработчиком указателя или элементом.
Примечание: Соответствующий обработчик onCanceled.
grabChanged(GrabTransition transition, EventPoint point)
Этот сигнал испускается, когда захват изменился каким-либо образом, относящимся к этому обработчику.
transition (глагол) указывает, что произошло. point (объект) — это точка, которая была захвачена или освобождена.
Примечание: Соответствующий обработчик onGrabChanged.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qml-qtquick-multipointhandler.html