HoverHandler QML Type
Handler für Maus und Tablet Hover. Mehr...
| Import Statement: | import QtQuick |
| Inherits: |
Eigenschaften
- acceptedDevices : flags
- acceptedModifiers : flags
- acceptedPointerTypes : flags
- active : bool
- blocking : bool
(since 6.3) - cursorShape : Qt::CursorShape
- enabled : bool
- grabPermissions : flags
- hovered : bool
- margin : real
- parent : Item
- point : handlerPoint
- target : Item
Signale
- canceled(eventPoint point)
- grabChanged(PointerDevice::GrabTransition transition, eventPoint point)
Detaillierte Beschreibung
HoverHandler erkennt einen schwebenden Maus- oder Tablet-Stift-Cursor.
Eine Bindung an die Eigenschaft hovered ist der einfachste Weg, um zu reagieren, wenn der Cursor das Element parent betritt oder verlässt. Die Eigenschaft point bietet mehr Details, einschließlich der Cursorposition. Die Eigenschaften acceptedDevices, acceptedPointerTypes und acceptedModifiers können verwendet werden, um das Verhalten einzugrenzen, um das Hovering von bestimmten Gerätetypen oder das Halten einer Modifizierungstaste zu erkennen.
Die Eigenschaft cursorShape ermöglicht die Änderung des Cursors, wenn hovered zu true wechselt.
Siehe auch MouseArea, PointHandler und Qt Quick Beispiele - Pointer Handlers.
Dokumentation der Eigenschaft
acceptedDevices : flags
Die Typen von Zeigegeräten, die den Pointer-Handler aktivieren können.
Standardmäßig ist diese Eigenschaft auf PointerDevice.AllDevices gesetzt. Wenn Sie sie auf eine ODER-Kombination von Gerätetypen setzen, werden Zeigerereignisse von den nicht passenden Geräten ignoriert.
So könnte ein Element beispielsweise mit zwei Handlern auf eine Weise auf den Mauszeiger und auf eine andere Weise auf den Stylus reagieren:
import QtQuick Rectangle { width: 150; height: 50; radius: 3 color: mouse.hovered ? "goldenrod" : stylus.hovered ? "tomato" : "wheat" HoverHandler { id: stylus acceptedDevices: PointerDevice.Stylus cursorShape: Qt.CrossCursor } HoverHandler { id: mouse acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad cursorShape: Qt.PointingHandCursor } }
Die verfügbaren Gerätetypen sind wie folgt:
| Konstante | Beschreibung |
|---|---|
PointerDevice.Mouse | Eine Maus. |
PointerDevice.TouchScreen | Ein Touchscreen. |
PointerDevice.TouchPad | Ein Touchpad oder Trackpad. |
PointerDevice.Stylus | Ein Eingabestift auf einem Grafiktablett. |
PointerDevice.Airbrush | Ein Airbrush auf einem Grafiktablett. |
PointerDevice.Puck | Ein Digitalisiergerät mit Fadenkreuz auf einem Grafiktablett. |
PointerDevice.AllDevices | Jede Art von Zeigegerät. |
Hinweis: Nicht alle Plattformen sind in der Lage, zwischen Maus und Touchpad zu unterscheiden; und auf den Plattformen, auf denen dies möglich ist, möchten Sie oft das Verhalten von Maus und Touchpad gleich gestalten.
Siehe auch QInputDevice::DeviceType.
acceptedModifiers : flags
Wenn diese Eigenschaft gesetzt ist, wird ein Hover-Ereignis nur behandelt, wenn die angegebenen Tastaturmodifikatoren gedrückt werden. Ohne die Modifikatoren wird das Ereignis ignoriert.
Diese Eigenschaft ist standardmäßig auf Qt.KeyboardModifierMask gesetzt, was dazu führt, dass Hover-Ereignisse unabhängig von den Modifizierungstasten behandelt werden.
Ein Item könnte zum Beispiel zwei Handler desselben Typs haben, von denen einer nur aktiviert wird, wenn die erforderlichen Tastaturmodifikatoren gedrückt werden:
import QtQuick Rectangle { width: 150; height: 50; radius: 3 color: control.hovered ? "goldenrod" : shift.hovered ? "wheat" : "beige" HoverHandler { id: control acceptedModifiers: Qt.ControlModifier cursorShape: Qt.PointingHandCursor } HoverHandler { id: shift acceptedModifiers: Qt.ShiftModifier cursorShape: Qt.CrossCursor } }
Die verfügbaren Modifikatoren sind wie folgt:
| Konstante | Beschreibung |
|---|---|
Qt.NoModifier | Keine Modifikatortaste ist erlaubt. |
Qt.ShiftModifier | Es muss eine Umschalttaste auf der Tastatur gedrückt werden. |
Qt.ControlModifier | Eine Strg-Taste auf der Tastatur muss gedrückt sein. |
Qt.AltModifier | Eine Alt-Taste auf der Tastatur muss gedrückt sein. |
Qt.MetaModifier | Eine Meta-Taste auf der Tastatur muss gedrückt sein. |
Qt.KeypadModifier | Eine Taste der Tastatur muss gedrückt sein. |
Qt.GroupSwitchModifier | Eine Mode_switch-Taste auf der Tastatur muss gedrückt sein. Nur X11 (sofern nicht unter Windows durch ein Befehlszeilenargument aktiviert). |
Qt.KeyboardModifierMask | Der Handler ignoriert Modifikatortasten. |
Siehe auch Qt::KeyboardModifier.
acceptedPointerTypes : flags
Die Typen von Zeigeinstrumenten (generisch, Stift, Radiergummi usw.), die den Pointer-Handler aktivieren können.
Standardmäßig ist diese Eigenschaft auf PointerDevice.AllPointerTypes gesetzt. Wenn Sie sie auf eine ODER-Kombination von Gerätetypen setzen, werden Ereignisse von nicht übereinstimmenden Ereignissen ignoriert.
So könnten Sie beispielsweise eine Rückmeldung geben, indem Sie den Cursor ändern, je nachdem, ob ein Stift oder ein Radiergummi über einem Grafiktablett schwebt:
import QtQuick Rectangle { id: rect width: 150; height: 150 HoverHandler { id: stylus acceptedPointerTypes: PointerDevice.Pen cursorShape: Qt.CrossCursor } HoverHandler { id: eraser acceptedPointerTypes: PointerDevice.Eraser cursorShape: Qt.BlankCursor target: Image { parent: rect source: "images/cursor-eraser.png" visible: eraser.hovered x: eraser.point.position.x y: eraser.point.position.y - 32 } } }
Die verfügbaren Zeigertypen sind wie folgt:
| Konstante | Beschreibung |
|---|---|
PointerDevice.Generic | Eine Maus oder ein Gerät, das eine Maus emuliert. |
PointerDevice.Finger | Ein Finger auf einem Touchscreen (Hover-Erkennung ist unwahrscheinlich). |
PointerDevice.Pen | Ein Eingabestift auf einem Grafiktablett. |
PointerDevice.Eraser | Ein Radiergummi auf einem Grafiktablett. |
PointerDevice.Cursor | Ein Digitalisiergerät mit Fadenkreuz auf einem Grafiktablett. |
PointerDevice.AllPointerTypes | Jede Art von Zeigegerät. |
Siehe auch QPointingDevice::PointerType.
active : bool [read-only]
Dies gilt true immer dann, wenn dieser Input Handler die alleinige Verantwortung für die Übergabe eines oder mehrerer eventPoints übernommen hat, indem er erfolgreich einen exklusiven Zugriff auf diese Punkte genommen hat. Das bedeutet, dass er seine Eigenschaften entsprechend den Bewegungen dieser EventPoints auf dem neuesten Stand hält und seine target (falls vorhanden) aktiv manipuliert.
blocking : bool [since 6.3]
Ob dieser Handler verhindert, dass andere Elemente oder Handler hinter ihm gleichzeitig mit dem Mauszeiger bewegt werden. Diese Eigenschaft ist standardmäßig false.
Diese Eigenschaft wurde in Qt 6.3 eingeführt.
cursorShape : Qt::CursorShape
Diese Eigenschaft enthält die Cursorform, die immer dann angezeigt wird, wenn hovered true ist und kein anderer Handler diese überschreibt.
Die verfügbaren Cursorformen sind:
- 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
Der Standardwert dieser Eigenschaft ist nicht gesetzt, wodurch jeder aktive Handler auf demselben übergeordneten Element die Cursorform bestimmen kann. Diese Eigenschaft kann auf den Ausgangszustand zurückgesetzt werden, indem sie auf undefined gesetzt wird.
Wenn ein beliebiger Handler mit der Definition cursorShape active ist, wird dieser Cursor angezeigt. Andernfalls, wenn HoverHandler einen definierten cursorShape hat, wird dieser Cursor erscheinen. Andernfalls wird der cursor des übergeordneten Elements angezeigt.
Hinweis: Wenn diese Eigenschaft nicht oder auf undefined gesetzt wurde, wird beim Lesen des Wertes Qt.ArrowCursor zurückgegeben.
Siehe auch Qt::CursorShape und QQuickItem::cursor().
enabled : bool
Wenn ein HoverHandler deaktiviert ist, werden alle Ereignisse abgelehnt und keine Signale ausgegeben.
Wenn die parent eines HoverHandler disabled ist, reagiert HoverHandler standardmäßig weiterhin auf Hover-Ereignisse. Dies liegt daran, dass Hover-Feedback-Effekte und Tooltips auch dann nützlich sein können, wenn ein Steuerelement deaktiviert ist. Wenn Sie das HoverHandler deaktivieren möchten, wenn das übergeordnete Steuerelement deaktiviert ist, können Sie eine Bindung hinzufügen:
Item { HoverHandler { enabled: parent.enabled } }
grabPermissions : flags
Diese Eigenschaft gibt die Berechtigungen an, wenn die Logik dieses Handlers beschließt, den exklusiven Greifer zu übernehmen, oder wenn er von einem anderen Handler aufgefordert wird, die Übernahme oder den Abbruch des Greifers zu genehmigen.
| Konstante | Beschreibung |
|---|---|
PointerHandler.TakeOverForbidden | Dieser Handler nimmt keinem Item- oder Handler-Typ die Grab-Erlaubnis ab und gibt sie auch nicht. |
PointerHandler.CanTakeOverFromHandlersOfSameType | Dieser Handler kann den exklusiven Zugriff von einem anderen Handler der gleichen Klasse übernehmen. |
PointerHandler.CanTakeOverFromHandlersOfDifferentType | Dieser Handler kann den exklusiven Zugriff von jeder Art von Handler annehmen. |
PointerHandler.CanTakeOverFromItems | Dieser Handler kann den exklusiven Zugriff von jeder Art von Item annehmen. |
PointerHandler.CanTakeOverFromAnything | Dieser Handler kann den exklusiven Zugriff von jeder Art von Item oder Handler annehmen. |
PointerHandler.ApprovesTakeOverByHandlersOfSameType | Dieser Handler gibt einem anderen Handler der gleichen Klasse die Erlaubnis, den Greifer zu nehmen. |
PointerHandler.ApprovesTakeOverByHandlersOfDifferentType | Dieser Handler gibt jeder Art von Handler die Erlaubnis, den Greifer zu nehmen. |
PointerHandler.ApprovesTakeOverByItems | Dieser Handler gibt jeder Art von Gegenstand die Erlaubnis, den Greifer zu nehmen. |
PointerHandler.ApprovesCancellation | Dieser Handler erlaubt, dass sein Grab auf Null gesetzt wird. |
PointerHandler.ApprovesTakeOverByAnything | Dieser Handler erlaubt es jeder Art von Item oder Handler, den Grab zu nehmen. |
Die Voreinstellung ist PointerHandler.CanTakeOverFromItems | PointerHandler.CanTakeOverFromHandlersOfDifferentType | PointerHandler.ApprovesTakeOverByAnything, was die meisten Übernahmeszenarien erlaubt, aber z.B. verhindert, dass zwei PinchHandler um dieselben Touchpoints kämpfen.
hovered : bool [read-only]
Bleibt wahr, wenn sich der Cursor eines Zeigegeräts (Maus oder Tablett) innerhalb der Grenzen des parent Elements befindet, gegebenenfalls erweitert um margin.
margin : real
Der Rand außerhalb der Grenzen des parent Elements, innerhalb dessen ein eventPoint diesen Handler aktivieren kann. Bei einem PinchHandler, bei dem das target auch das parent ist, ist es beispielsweise sinnvoll, diesen Wert auf einen Abstand von mindestens der halben Breite des Fingers eines typischen Benutzers festzulegen, damit die Pinch-Geste auch dann noch möglich ist, wenn das parent auf eine sehr kleine Größe verkleinert wurde. Wenn eine TapHandler-basierte Schaltfläche in der Nähe des Bildschirmrands platziert wird, kann sie verwendet werden, um das Fitts'sche Gesetz zu erfüllen: Sie reagiert auf Mausklicks am Bildschirmrand, obwohl die Schaltfläche visuell einige Pixel vom Rand entfernt ist.
Der Standardwert ist 0.

parent : Item
Die Item, die der Anwendungsbereich des Handlers ist; das Item, in dem er deklariert wurde. Der Handler behandelt Ereignisse im Namen dieses Items, was bedeutet, dass ein Zeigerereignis relevant ist, wenn mindestens eines seiner eventPoints im Inneren des Items auftritt. Ursprünglich ist target() derselbe, aber er kann neu zugewiesen werden.
Siehe auch target und QObject::parent().
point : handlerPoint [read-only]
Die eventPoint, die gerade bearbeitet wird. Wenn derzeit kein Punkt bearbeitet wird, wird dieses Objekt auf die Standardwerte zurückgesetzt (alle Koordinaten sind 0).
target : Item
Das Element, das von diesem Handler bearbeitet wird.
Standardmäßig ist es dasselbe wie das parent, das Element, in dem der Handler deklariert ist. Manchmal kann es jedoch nützlich sein, das Ziel auf ein anderes Element zu setzen, um Ereignisse innerhalb eines Elements zu behandeln, aber ein anderes zu manipulieren; oder auf null, um das Standardverhalten zu deaktivieren und stattdessen etwas anderes zu tun.
Signal-Dokumentation
canceled(eventPoint point)
Wenn dieser Handler das angegebene point bereits gegrabbt hat, wird dieses Signal ausgegeben, wenn das Grab von einem anderen Pointer Handler oder Item gestohlen wird.
Hinweis: Der entsprechende Handler ist onCanceled.
grabChanged(PointerDevice::GrabTransition transition, eventPoint point)
Dieses Signal wird ausgegeben, wenn sich der Greifer in irgendeiner Weise verändert hat, die für diesen Handler relevant ist.
Das transition (Verb) sagt, was passiert ist. Das point (Objekt) ist der Punkt, der gegriffen oder nicht gegriffen wurde.
Gültige Werte für transition sind:
| Konstante | Beschreibung |
|---|---|
PointerDevice.GrabExclusive | Dieser Handler hat die Hauptverantwortung für die Bearbeitung des point übernommen. |
PointerDevice.UngrabExclusive | Dieser Handler hat sein bisheriges exklusives Greifen aufgegeben. |
PointerDevice.CancelGrabExclusive | Der exklusive Zugriff dieses Handlers wurde übernommen oder aufgehoben. |
PointerDevice.GrabPassive | Dieser Handler hat einen passiven Zugriff erworben, um die point zu überwachen. |
PointerDevice.UngrabPassive | Dieser Handler hat seinen bisherigen passiven Zugriff aufgegeben. |
PointerDevice.CancelGrabPassive | Der vorherige passive Zugriff dieses Handlers wurde abnormal beendet. |
Hinweis: Der entsprechende Handler ist onGrabChanged.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.