Тип QML MultiPointHandler
Абстрактный обработчик событий Pointer Events для нескольких точек. Подробнее...
| Заявление об импорте: | import QtQuick 2.1 |
| С тех пор: | 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
Это значение истинно, когда этот обработчик ввода принял на себя полную ответственность за обработку одной или нескольких 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
Отступ за пределами границ элемента parent, в пределах которого точка события может активировать этот обработчик. Например, на PinchHandler, где target также является parent, полезно установить это значение на расстояние, по крайней мере, равное половине ширины типичного пальца пользователя, чтобы при уменьшении размера parent возможность жеста pinch оставалась. Или, если кнопка на основе TapHandler размещена рядом с краем экрана, она может быть использована для соответствия закону Фиттса: реагировать на щелчки мыши на краю экрана, даже если кнопка визуально отступена от края на несколько пикселей.
Значение по умолчанию равно 0.
maximumPointCount : int
Максимальное количество точек касания, которые может использовать этот обработчик.
Если на parent воздействуют большее количество точек касания, необходимое количество точек будет выбрано в порядке их нажатия, а оставшиеся точки будут проигнорированы.
Любые проигнорированные точки могут активировать других обработчики ввода, имеющие другие ограничения, на том же элементе или на других элементах.
Значение по умолчанию такое же, как и у minimumPointCount.
minimumPointCount : int
Минимальное количество точек касания, необходимое для активации этого обработчика.
Если количество точек касания меньше, они будут проигнорированы.
Любые проигнорированные точки могут активировать других обработчики ввода, имеющие другие ограничения, на том же элементе или на других элементах.
Значение по умолчанию равно 2.
[только для чтения] parent : Item
Элемент Item, который является областью действия обработчика; элемент, в котором он был объявлен. Обработчик будет обрабатывать события от имени этого элемента, что означает, что событие указателя актуально, если хотя бы одна из его точек события находится внутри внутренности элемента. Изначально target() такой же, но он может быть переназначен.
См. также target и QObject::parent().
target : Item
Элемент Item, который будет управлять этот обработчик.
По умолчанию он такой же, как и parent, элемент, в котором объявлен обработчик. Однако иногда бывает полезно установить целевой элемент на другой элемент, чтобы обрабатывать события внутри одного элемента, но манипулировать другим; или чтобы 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.1/qml-qtquick-multipointhandler.html