Тип QML HoverHandler
Обработчик наведения курсора мыши и планшета. Подробнее...
| Заявление об импорте: | import QtQuick 2.15 |
| Наследует: |
Свойства
- acceptedButtons : flags
- acceptedDevices : flags
- acceptedModifiers : flags
- acceptedPointerTypes : flags
- active : bool
- cursorShape : Qt::CursorShape
- cursorShape : Qt::CursorShape
- dragThreshold : int
- enabled : bool
- grabPermissions : flags
- hovered : bool
- margin : real
- parent : Item
- point : HandlerPoint
- target : Item
Сигналы
- canceled(EventPoint point)
- grabChanged(GrabTransition transition, EventPoint point)
Подробное описание
HoverHandler обнаруживает наведение курсора мыши или стилуса планшета.
Связывание со свойством hovered — самый простой способ реагировать на ввод или вывод курсора в элемент parent. Свойство point предоставляет более подробную информацию, включая положение курсора. Свойства acceptedDevices, acceptedPointerTypes и acceptedModifiers можно использовать для сужения поведения, чтобы обнаружить наведение курсора определённых типов устройств или при удерживании клавиши модификатора.
Свойство cursorShape позволяет изменять форму курсора всякий раз, когда hovered изменяется на true.
См. также MouseArea и PointHandler.
Документация по свойствам
acceptedButtons : flags
Кнопки мыши, которые могут активировать этот обработчик указателя.
По умолчанию это свойство установлено в Qt.LeftButton. Его можно установить в комбинацию кнопок мыши, и оно будет игнорировать события от других кнопок.
Например, для управления можно создать два обработчика, реагирующие на щелчки левой и правой кнопкой:
Item {
TapHandler {
onTapped: console.log("left clicked")
}
TapHandler {
acceptedButtons: Qt.RightButton
onTapped: console.log("right clicked")
}
} Примечание: Нажатие на сенсорный экран или нажатие стилуса на графическом планшете имитирует нажатие левой кнопки мыши. Это поведение можно изменить с помощью acceptedDevices или acceptedPointerTypes.
acceptedDevices : flags
Типы указательных устройств, которые могут активировать этот обработчик указателя.
По умолчанию это свойство установлено в 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
Типы указательных инструментов (палец, стилус, ластик и т. д.), которые могут активировать этот обработчик указателя.
По умолчанию это свойство установлено в 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, когда этот обработчик ввода взял на себя полную ответственность за обработку одного или нескольких EventPoints, успешно захватив эксклюзивный захват этих точек. Это означает, что он поддерживает актуальность своих свойств в соответствии с перемещением этих Event Points и активно манипулирует своим target (если таковой имеется).
cursorShape : Qt::CursorShape
Это свойство содержит форму курсора, которая будет отображаться всякий раз, когда курсор мыши находится над родительским элементом, а 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
Значение по умолчанию не установлено, что позволяет отобразить курсор родительского элемента. Это свойство можно сбросить до исходного состояния, установив его в undefined.
Примечание: Когда это свойство не установлено или установлено в undefined, при чтении значения оно вернёт Qt.ArrowCursor.
Это свойство было добавлено в Qt 5.15.
См. также Qt::CursorShape, QQuickItem::cursor() и HoverHandler::cursorShape.
cursorShape : Qt::CursorShape
Это свойство содержит форму курсора, которая будет отображаться всякий раз, когда hovered равно 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
Значение по умолчанию этого свойства не установлено, что позволяет любому активному обработчику в том же parentItem определить форму курсора. Это свойство можно сбросить до исходного состояния, установив его в undefined.
Если какой-либо обработчик с определённым cursorShape активен, этот курсор появится. В противном случае, если у обработчика HoverHandler определён cursorShape, этот курсор появится. Иначе появится курсор parentItem, указанный в cursor.
Примечание: Если это свойство не установлено или установлено в undefined, при чтении значения оно вернёт Qt.ArrowCursor.
Это свойство было добавлено в Qt 5.15.
См. также Qt::CursorShape и QQuickItem::cursor().
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, что разрешает большинство сценариев захвата, но избегает, например, конфликтов между двумя PinchHandlers за те же точки касания.
[только для чтения] hovered : bool
Содержит значение true, когда курсор любого указательного устройства (мышь или планшет) находится в пределах границ элемента parent, расширенных, если есть, отступом margin.
margin : real
Отступ за пределами границ родительского элемента parent, в пределах которого точка события может активировать этот обработчик. Например, в PinchHandler, где target также является parent, полезно установить это значение как расстояние, по крайней мере, вдвое превышающее ширину типичной пальцы пользователя, так что если parent масштабировано до очень маленького размера, жест Pinch всё ещё возможен. Или, если кнопка, основанная на TapHandler, расположена около края экрана, его можно использовать для соответствия закону Фиттса: реагировать на щелчки мыши на краю экрана, даже если кнопка визуально расположена от края на несколько пикселей.
Значение по умолчанию равно 0.
[только для чтения] parent : Item
Элемент Item, который является областью действия обработчика; элемент, в котором он был объявлен. Обработчик будет обрабатывать события от имени этого элемента, что означает, что событие указателя имеет отношение, если хотя бы одна из его точек события находится внутри внутреннего элемента. Изначально target() такое же, но его можно переназначить.
См. также target и QObject::parent().
[только для чтения] point : HandlerPoint
Точка события, которая обрабатывается в данный момент. Когда никакая точка не обрабатывается, этот объект сбрасывается до значений по умолчанию (все координаты равны 0).
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-5.15/qml-qtquick-hoverhandler.html