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