Тип QML SinglePointHandler
Абстрактный обработчик событий Pointer для одиночной точки. Подробнее...
| Заявление об импорте: | import QtQuick 2.0 |
| Наследует: | |
| Наследуется от: |
Свойства
- acceptedButtons : flags
- acceptedDevices : flags
- acceptedModifiers : flags
- acceptedPointerTypes : flags
- active : bool
- cursorShape : Qt::CursorShape
- dragThreshold : int
- 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")
}
} Если вы установите 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.
По умолчанию это свойство установлено в 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, когда этот обработчик ввода взял на себя полную ответственность за обработку одной или нескольких точек EventPoint, успешно захватив эксклюзивный захват этих точек. Это означает, что он сохраняет свои свойства, обновлённые в соответствии с перемещениями этих точек EventPoint и активно управляет своим элементом 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
Отступ за пределами границ родительского элемента parent, внутри которого точка события может активировать этот обработчик. Например, для PinchHandler, где target также является parent, полезно установить это значение как расстояние, по крайней мере, вдвое превышающее ширину типичного пальца пользователя, чтобы, если parent был уменьшен до очень маленького размера, жест Pinch всё ещё был возможен. Или, если кнопка на основе TapHandler размещена рядом с краем экрана, её можно использовать для соответствия закону Фиттса: реагировать на щелчки мыши на краю экрана, даже если кнопка визуально смещена от края на несколько пикселей.
Значение по умолчанию — 0.
[только для чтения] parent : Item
Элемент Item, являющийся областью действия обработчика; элемент, в котором он был объявлен. Обработчик будет обрабатывать события от имени этого элемента, что означает, что событие указателя актуально, если хотя бы одна из его точек событий находится внутри области элемента. Изначально target() совпадает, но его можно переназначить.
См. также target и QObject::parent().
[только для чтения] point : HandlerPoint
Точка события, которая в данный момент обрабатывается. Когда никакая точка не обрабатывается, этот объект сбрасывается до значений по умолчанию (все координаты равны 0).
target : Item
Элемент Item, который будет изменён этим обработчиком.
По умолчанию он совпадает с parent, элементом, в котором объявлен обработчик. Однако иногда бывает полезно установить target на другой элемент, чтобы обрабатывать события в одном элементе, но изменять другой; или чтобы 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.0/qml-qtquick-singlepointhandler.html