Тип QML HoverHandler
Обработчик наведения курсора мыши и планшета. Подробнее...
| Заявление об импорте: | import QtQuick 2.14 |
| Наследуется от: |
Свойства
- acceptedButtons : flags
- acceptedDevices : flags
- acceptedModifiers : flags
- acceptedPointerTypes : flags
- active : bool
- enabled : bool
- grabPermissions : flags
- hovered : bool
- margin : real
- parent : Item
- point : HandlerPoint
- target : Item
Сигналы
- canceled(point)
- grabChanged(transition, EventPoint point)
Подробное описание
HoverHandler обнаруживает курсор мыши или планшета, наведённый на объект.
Связывание со свойством hovered — самый простой способ реагировать на вход или выход курсора в/из элемент parent. Свойство point предоставляет больше деталей, включая позицию курсора. Свойства acceptedDevices, acceptedPointerTypes и acceptedModifiers позволяют сузить поведение, чтобы обнаруживать наведение курсора определённых типов устройств или при нажатой клавише модификатора.
См. также 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
Это значение истинно всякий раз, когда этот обработчик ввода взял на себя полную ответственность за обработку одного или нескольких EventPoints, успешно захватив исключительное управление этими точками. Это означает, что он сохраняет свои свойства, обновляемые в соответствии с перемещениями этих EventPoints, и активно управляет своим target (если таковой есть).
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
Истинно, когда любой указательный курсор (мыши или планшета) находится в границах элемента parent, расширенных на величину margin, если таковая есть.
margin : real
Поле за пределами границ элемента родитель, внутри которого точка события может активировать этот обработчик. Например, на элементе PinchHandler, где элемент target также является parent, полезно установить это значение на расстояние, по крайней мере, равное половине ширины типичного пальца пользователя, чтобы при уменьшении размера элемента parent возможность выполнения жеста pinch сохранялась. Или, если кнопка на основе TapHandler размещена рядом с краем экрана, она может использоваться для соответствия закону Фиттса: реагировать на щелчки мыши на краю экрана, даже если кнопка визуально отстоит от края на несколько пикселей.
Значение по умолчанию — 0.
[только для чтения] parent : Item
Элемент Item, являющийся областью действия обработчика; элемент, в котором он был объявлен. Обработчик будет обрабатывать события от имени этого элемента, что означает, что событие указателя является релевантным, если хотя бы одна из его точек событий находится внутри внутренней области элемента. Изначально target() совпадает, но его можно переназначить.
См. также target и QObject::parent().
[только для чтения] point : HandlerPoint
Точка события, которая в данный момент обрабатывается. Когда никакая точка не обрабатывается, этот объект сбрасывается до значений по умолчанию (все координаты равны 0).
target : Item
Элемент Item, который будет манипулировать этот обработчик.
По умолчанию он совпадает с элементом parent, элементом, в котором объявлен обработчик. Однако иногда может быть полезно установить элемент target на другой элемент, чтобы обрабатывать события в одном элементе, но манипулировать другим; или чтобы null, чтобы отключить стандартное поведение и сделать что-то другое вместо этого.
Документация сигналов
canceled(point)
Если этот обработчик уже захватил указанную point, этот сигнал испускается, когда захват украден другим обработчиком указателя или элементом.
grabChanged(transition, EventPoint point)
Этот сигнал испускается, когда захват каким-либо образом изменился, что важно для этого обработчика.
transition (глагол) указывает, что произошло. point (объект) — это точка, которая была захвачена или освобождена.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qml-qtquick-hoverhandler.html