Тип QML HoverHandler
Обработчик наведения курсора мыши и планшета. Подробнее...
| Заявление об импорте: | import QtQuick 2.1 |
| Наследует: |
Свойства
- acceptedButtons : flags
- acceptedDevices : flags
- acceptedModifiers : flags
- acceptedPointerTypes : flags
- active : bool
- 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 с помощью аргумента командной строки). Нажата клавиша 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
Типы указательных инструментов (палец, стилус, ластик и т. д.), которые могут активировать этот обработчик указателей.
По умолчанию это свойство установлено в 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 (если таковой имеется).
[с версии 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
Значение по умолчанию этого свойства не установлено, что позволяет любому активному обработчику в том же элементе parent определить форму курсора. Это свойство можно сбросить до исходного состояния, установив его в значение undefined.
Если какой-либо обработчик с определённой cursorShape является активным, отобразится этот курсор. В противном случае, если у HoverHandler определена cursorShape, отобразится этот курсор. В противном случае отобразится курсор элемента parent.
Примечание: Когда это свойство не установлено или установлено в undefined, при чтении значения оно вернёт Qt.ArrowCursor.
Это свойство было добавлено в Qt 5.15.
См. также Qt::CursorShape и QQuickItem::cursor().
[с версии 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 был уменьшен до очень маленького размера, жест 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.1/qml-qtquick-hoverhandler.html