SinglePointHandler QML Type
Abstrakter Handler für Ein-Punkt-Zeiger-Ereignisse. Mehr...
Import Statement: | import QtQuick |
Inherits: | |
Inherited By: | |
Status: | Preliminary |
Dieser Typ befindet sich in der Entwicklung und kann sich noch ändern.
Eigenschaften
- acceptedButtons : flags
- acceptedDevices : flags
- acceptedModifiers : flags
- acceptedPointerTypes : flags
- active : bool
- cursorShape : Qt::CursorShape
- dragThreshold : int
- enabled : bool
- grabPermissions : flags
- margin : real
- parent : Item
- point : handlerPoint
- target : Item
Signale
- canceled(eventPoint point)
- grabChanged(PointerDevice::GrabTransition transition, eventPoint point)
Detaillierte Beschreibung
Eine Zwischenklasse (nicht als QML-Typ registriert) für die gebräuchlichsten Handler: solche, die nur einen einzigen Punkt erwarten. wantsPointerEvent() wählt den ersten Punkt, der sich innerhalb des Zielelements befindet, und gibt true zurück, solange das Ereignis diesen Punkt enthält. Überschreiben Sie handleEventPoint(), um einen Ein-Punkt-Handler zu implementieren.
Dokumentation der Eigenschaft
acceptedButtons : flags |
Die Maustasten, die diesen Pointer-Handler aktivieren können.
Standardmäßig ist diese Eigenschaft auf Qt.LeftButton gesetzt. Sie kann auf eine ODER-Kombination von Maustasten gesetzt werden und ignoriert Ereignisse von anderen Tasten.
Zum Beispiel könnte ein Steuerelement so eingestellt werden, dass es auf Links- und Rechtsklicks auf unterschiedliche Weise reagiert, mit zwei Handlern:
Item { TapHandler { onTapped: console.log("left clicked") } TapHandler { acceptedButtons: Qt.RightButton onTapped: console.log("right clicked") } }
Hinweis: Das Tippen auf einem Touchscreen oder das Tippen mit dem Stift auf einem Grafiktablett emuliert das Klicken mit der linken Maustaste. Dieses Verhalten kann über acceptedDevices oder acceptedPointerTypes geändert werden.
acceptedDevices : flags |
Die Typen von Zeigegeräten, die diesen Pointer-Handler aktivieren können.
Standardmäßig ist diese Eigenschaft auf PointerDevice.AllDevices eingestellt. Wenn Sie sie auf eine ODER-Kombination von Gerätetypen einstellen, werden Ereignisse von nicht übereinstimmenden Geräten ignoriert.
So kann ein Steuerelement beispielsweise mit zwei Handlern auf Maus- und Stiftklicks und auf Berührungen des Touchscreens reagieren:
Item { TapHandler { acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad | PointerDevice.Stylus onTapped: console.log("clicked") } TapHandler { acceptedDevices: PointerDevice.TouchScreen onTapped: console.log("tapped") } }
Hinweis: Noch sind nicht alle Plattformen in der Lage, zwischen Maus und Touchpad zu unterscheiden; und auf den Plattformen, auf denen dies der Fall ist, möchten Sie oft das Verhalten von Maus und Touchpad gleich gestalten.
acceptedModifiers : flags |
Wenn diese Eigenschaft gesetzt ist, müssen die angegebenen Tastaturmodifikatoren gedrückt werden, um auf Zeigerereignisse zu reagieren, andernfalls werden sie ignoriert.
Wenn diese Eigenschaft auf Qt.KeyboardModifierMask
(den Standardwert) gesetzt ist, ignoriert PointerHandler die Modifizierungstasten.
Ein Item könnte zum Beispiel zwei Handler desselben Typs haben, von denen einer nur aktiviert wird, wenn die erforderlichen Tastaturmodifikatoren gedrückt werden:
Item { TapHandler { acceptedModifiers: Qt.ControlModifier onTapped: console.log("control-tapped") } TapHandler { acceptedModifiers: Qt.NoModifier onTapped: console.log("tapped") } }
Wenn Sie acceptedModifiers
auf eine ODER-Kombination von Modifikatortasten setzen, bedeutet dies, dass alle diese Modifikatoren gedrückt werden müssen, um den Handler zu aktivieren:
Item { TapHandler { acceptedModifiers: Qt.ControlModifier | Qt.AltModifier | Qt.ShiftModifier onTapped: console.log("control-alt-shift-tapped") } }
Die verfügbaren Modifikatoren sind wie folgt:
Konstante | Beschreibung |
---|---|
NoModifier | Keine Modifikatortaste ist erlaubt. |
ShiftModifier | Es muss eine Umschalttaste auf der Tastatur gedrückt werden. |
ControlModifier | Eine Strg-Taste auf der Tastatur muss gedrückt sein. |
AltModifier | Eine Alt-Taste auf der Tastatur muss gedrückt sein. |
MetaModifier | Eine Meta-Taste auf der Tastatur muss gedrückt sein. |
KeypadModifier | Eine Taste der Tastatur muss gedrückt sein. |
GroupSwitchModifier | Nur X11 (sofern nicht unter Windows durch ein Befehlszeilenargument aktiviert). Eine Mode_switch-Taste auf der Tastatur muss gedrückt sein. |
KeyboardModifierMask | Dem Handler ist es egal, welche Modifikatoren gedrückt werden. |
Wenn Sie ein noch komplexeres Verhalten benötigen, als es mit Kombinationen mehrerer Handler mit mehreren Modifier-Flags erreicht werden kann, können Sie die Modifier in JavaScript-Code überprüfen:
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; } } }
Siehe auch Qt::KeyboardModifier.
acceptedPointerTypes : flags |
Die Arten von Zeigeinstrumenten (Finger, Stift, Radiergummi usw.), die diesen 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 devices ignoriert.
Beispielsweise könnte ein Steuerelement so eingestellt werden, dass es auf Maus-, Touch- und Stiftklicks reagiert, sich aber selbst löscht, wenn es mit einem Radiergummi auf einem Grafiktablett angetippt wird, und zwar mit zwei Handlern:
Rectangle { id: rect TapHandler { acceptedPointerTypes: PointerDevice.Generic | PointerDevice.Finger | PointerDevice.Pen onTapped: console.log("clicked") } TapHandler { acceptedPointerTypes: PointerDevice.Eraser onTapped: rect.destroy() } }
active : bool |
Dies gilt für true
, 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.
cursorShape : Qt::CursorShape |
Diese Eigenschaft enthält die Cursorform, die immer dann erscheint, wenn der Mauszeiger über dem Element parent schwebt, während active true
ist.
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 ist nicht gesetzt, so dass das Element cursor von parent erscheinen kann. Diese Eigenschaft kann auf den gleichen Ausgangszustand zurückgesetzt werden, indem sie auf undefiniert gesetzt wird.
Hinweis: Wenn diese Eigenschaft nicht gesetzt ist oder auf undefined
gesetzt wurde, wird beim Auslesen des Wertes Qt.ArrowCursor
zurückgegeben.
Siehe auch Qt::CursorShape, QQuickItem::cursor(), und HoverHandler::cursorShape.
dragThreshold : int |
Die Entfernung in Pixeln, die der Benutzer eine eventPoint ziehen muss, damit sie als Ziehgeste behandelt wird.
Der Standardwert hängt von der Plattform und der Bildschirmauflösung ab. Er kann auf den Standardwert zurückgesetzt werden, indem er auf undefiniert gesetzt wird. Das Verhalten, wenn eine Ziehgeste beginnt, variiert in verschiedenen Handlern.
enabled : bool |
Wenn ein PointerHandler deaktiviert ist, werden alle Ereignisse zurückgewiesen und keine Signale ausgegeben.
grabPermissions : flags |
Diese Eigenschaft legt die Berechtigungen fest, wenn die Logik dieses Handlers beschließt, den exklusiven Greifvorgang zu übernehmen, oder wenn er von einem anderen Handler aufgefordert wird, die Übernahme oder den Abbruch des Greifvorgangs zu genehmigen.
Konstante | Beschreibung |
---|---|
PointerHandler.TakeOverForbidden | Dieser Handler nimmt keinem Item- oder Handler-Typ die Grab-Erlaubnis weg und gibt sie auch nicht weiter. |
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 Griff zu übernehmen. |
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.
margin : real |
Der Spielraum außerhalb der Grenzen des parent Elements, innerhalb dessen ein eventPoint diesen Handler aktivieren kann. Bei einem PinchHandler, bei dem target auch das parent
ist, ist es zum Beispiel sinnvoll, diesen Abstand auf mindestens die halbe Breite des Fingers eines typischen Benutzers festzulegen, so dass die Pinch-Geste immer 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 den Anwendungsbereich des Handlers darstellt; das Element, in dem er deklariert wurde. Der Handler behandelt Ereignisse im Namen dieses Elements, was bedeutet, dass ein Zeiger-Ereignis relevant ist, wenn mindestens eines seiner eventPoints im Inneren des Elements auftritt. Ursprünglich ist target() derselbe, aber er kann neu zugewiesen werden.
Siehe auch target und QObject::parent().
point : handlerPoint |
Der eventPoint, der gerade bearbeitet wird. Wenn derzeit kein Punkt bearbeitet wird, wird dieses Objekt auf die Standardwerte zurückgesetzt (alle Koordinaten sind 0).
target : Item |
Der Punkt, der von diesem Handler bearbeitet wird.
Standardmäßig ist es dasselbe wie das parent, das Element, innerhalb dessen der Handler deklariert ist. Es kann jedoch manchmal 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 Grab 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
.
© 2025 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.