TapHandler QML Type
Handler für Tippen und Klicken. Mehr...
| Import Statement: | import QtQuick |
| Inherits: |
Eigenschaften
- acceptedButtons : flags
- acceptedDevices : flags
- acceptedModifiers : flags
- acceptedPointerTypes : flags
- active : bool
- cursorShape : Qt::CursorShape
- dragThreshold : int
- enabled : bool
- exclusiveSignals : enumeration
(since 6.5) - gesturePolicy : enumeration
- grabPermissions : flags
- longPressThreshold : real
- margin : real
- parent : Item
- point : handlerPoint
- pressed : bool
- tapCount : int
- target : Item
- timeHeld : real
Signale
- canceled(eventPoint point)
- doubleTapped(eventPoint eventPoint, Qt::MouseButton button)
- grabChanged(PointerDevice::GrabTransition transition, eventPoint point)
- longPressed()
- singleTapped(eventPoint eventPoint, Qt::MouseButton button)
- tapCountChanged()
- tapped(eventPoint eventPoint, Qt::MouseButton button)
Ausführliche Beschreibung
TapHandler ist ein Handler für Berührungen auf einem Touchscreen oder Klicks mit der Maus.
Die Erkennung einer gültigen Tippgeste hängt von „ gesturePolicy “ ab. Der Standardwert ist „DragThreshold“, was erfordert, dass das Drücken und Loslassen sowohl räumlich als auch zeitlich nahe beieinander liegen. In diesem Fall kann TapHandler ausschließlich mit einem passiven „Grab“ arbeiten und beeinträchtigt daher nicht die Ereignisübermittlung an andere Items oder Input-Handler. Daher ist der Standard gesturePolicy n nützlich, wenn Sie das Verhalten eines bestehenden Steuerelements oder Items durch Hinzufügen eines TapHandlers mit Bindungen und/oder JavaScript-Callbacks ändern möchten.
Beachten Sie, dass Schaltflächen (wie z. B. QPushButton) oft so implementiert sind, dass es keine Rolle spielt, ob das Drücken und Loslassen zeitlich nahe beieinander liegen: Wenn Sie die Schaltfläche drücken und es sich dann anders überlegen, müssen Sie den Finger ganz bis zum Rand der Schaltfläche ziehen, um den Klick abzubrechen. Für diesen Anwendungsfall setzen Sie den „ gesturePolicy “ auf „ TapHandler.ReleaseWithinBounds “.
import QtQuick
Rectangle {
id: button
signal clicked
property alias text: buttonLabel.text
height: Math.max(Screen.pixelDensity * 7, buttonLabel.implicitHeight * 1.2)
width: Math.max(Screen.pixelDensity * 11, buttonLabel.implicitWidth * 1.3)
radius: 3
property color dark: Qt.darker(palette.button, 1.3)
gradient: Gradient {
GradientStop { position: 0.0; color: tapHandler.pressed ? dark : palette.button }
GradientStop { position: 1.0; color: dark }
}
TapHandler {
id: tapHandler
gesturePolicy: TapHandler.ReleaseWithinBounds
onTapped: button.clicked()
}
Text {
id: buttonLabel
text: "Click Me"
color: palette.buttonText
anchors.centerIn: parent
}
}Bei Gesten mit mehreren Antippvorgängen (Doppeltippen, Dreifachtippen usw.) darf die zurückgelegte Strecke bei Mausbedienung QStyleHints::mouseDoubleClickDistance() und bei Touch-Bedienung QStyleHints::touchDoubleTapDistance() nicht überschreiten, und der Zeitabstand zwischen den Antippvorgängen darf QStyleHints::mouseDoubleClickInterval() nicht überschreiten.
Siehe auch MouseArea und Qt Quick Beispiele – Zeiger-Handler.
Dokumentation zu den Eigenschaften
acceptedButtons : flags
Die Maustasten, mit denen dieser Zeiger-Handler aktiviert werden kann.
Standardmäßig ist diese Eigenschaft auf „ Qt.LeftButton “ gesetzt. Sie kann auf eine OR-Kombination von Maustasten gesetzt werden und ignoriert dann Ereignisse von anderen Tasten.
Beispielsweise könnte ein Steuerelement so gestaltet werden, dass es auf Links- und Rechtsklicks unterschiedlich reagiert, und zwar mithilfe von zwei Handlern:
Item {
TapHandler {
onTapped: console.log("left clicked")
}
TapHandler {
acceptedButtons: Qt.RightButton
onTapped: console.log("right clicked")
}
}Hinweis: Das Antippen auf einem Touchscreen oder das Antippen 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 Arten von Zeigegeräten, die diesen 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 Ereignisse von nicht übereinstimmenden Geräten ignoriert.
Beispielsweise könnte ein Steuerelement so konfiguriert werden, dass es auf Maus- und Stiftklicks auf eine bestimmte Weise und auf Touchscreen-Tippen auf eine andere Weise reagiert, wobei zwei Handler verwendet werden:
Item {
TapHandler {
acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad | PointerDevice.Stylus
onTapped: console.log("clicked")
}
TapHandler {
acceptedDevices: PointerDevice.TouchScreen
onTapped: console.log("tapped")
}
}Hinweis: Noch könnennicht alle Plattformen zwischen Maus und Touchpad unterscheiden; und auf denjenigen, die dies tun, möchten Sie oft das Verhalten von Maus und Touchpad angleichen.
acceptedModifiers : flags
Wenn diese Eigenschaft gesetzt ist, müssen die angegebenen Tastaturmodifikatoren gedrückt werden, damit auf Zeigerereignisse reagiert wird; andernfalls werden diese ignoriert.
Ist diese Eigenschaft auf „ Qt.KeyboardModifierMask “ (Standardwert) gesetzt, ignoriert die „ PointerHandler “ die Modifikatortasten.
Beispielsweise könnte ein „ Item “ zwei Handler desselben Typs haben, von denen einer nur aktiviert wird, wenn die erforderlichen Tastaturmodifikatoren gedrückt sind:
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 Modifikatortasten gedrückt sein 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 | Es ist keine Modifikatortaste zulässig. |
ShiftModifier | Eine Umschalttaste auf der Tastatur muss gedrückt sein. |
ControlModifier | Die Strg-Taste auf der Tastatur muss gedrückt werden. |
AltModifier | Die Alt-Taste auf der Tastatur muss gedrückt werden. |
MetaModifier | Die Meta-Taste auf der Tastatur muss gedrückt werden. |
KeypadModifier | Eine Taste auf dem Ziffernblock muss gedrückt werden. |
GroupSwitchModifier | Nur X11 (es sei denn, es wurde unter Windows über ein Befehlszeilenargument aktiviert). Eine Mode_switch-Taste auf der Tastatur muss gedrückt werden. |
KeyboardModifierMask | Dem Handler ist es egal, welche Modifikatortasten gedrückt werden. |
Wenn Sie ein noch komplexeres Verhalten benötigen, als es mit Kombinationen aus mehreren Handlern und mehreren Modifikator-Flags erreicht werden kann, können Sie die Modifikatoren im 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 „OR“-Kombination von Gerätetypen setzen, werden Ereignisse von nicht übereinstimmenden „ devices “ ignoriert.
Beispielsweise könnte ein Steuerelement so gestaltet werden, dass es auf Maus-, Touch- und Stiftklicks in gewisser Weise reagiert, sich jedoch löscht, wenn es mit einem Radiergummi-Werkzeug auf einem Grafiktablett angetippt wird – 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 [read-only]
Dies gilt für true, sobald dieser Eingabe-Handler die alleinige Verantwortung für die Verarbeitung eines oder mehrerer eventPoints übernommen hat, indem er diese Punkte erfolgreich exklusiv erfasst hat. Das bedeutet, dass er seine Eigenschaften entsprechend den Bewegungen dieser eventPoints auf dem neuesten Stand hält und seine target (sofern vorhanden) aktiv bearbeitet.
cursorShape : Qt::CursorShape
Diese Eigenschaft legt die Cursorform fest, die angezeigt wird, wenn der Mauszeiger über das Element „ parent “ bewegt wird, während „ active “ auf „ true “ gesetzt ist.
Die verfügbaren Cursorformen sind:
- Qt.ArrowCursor
- Qt.UpArrowCursor
- Qt.CrossCursor
- Qt.WaitCursor
- Qt.IBeamCursor
- Qt.Größe-Vertikal-Cursor
- Qt.SizeHorCursor
- Qt.SizeBDiagCursor
- Qt.SizeFDiagCursor
- Qt.SizeAllCursor
- Qt.LeererCursor
- Qt.SplitVCursor
- Qt.SplitHCursor
- Qt.ZeigenderFinger-Cursor
- Qt.VerbotenerCursor
- Qt.Was-ist-das-Cursor
- Qt.Beschäftigt-Cursor
- Qt.Cursor mit offener Hand
- Qt.Geschlossene-Hand-Cursor
- Qt.Zieh-und-Kopiere-Cursor
- Qt.Ziehen-Verschieben-Cursor
- Qt.DragLinkCursor
Der Standardwert ist nicht festgelegt, wodurch das Element „ cursor “ von „ parent “ angezeigt wird. Diese Eigenschaft kann auf den ursprünglichen Zustand zurückgesetzt werden, indem sie auf „undefined“ gesetzt wird.
Hinweis: Wenn diese Eigenschaft nicht festgelegt wurde oder auf „ undefined “ gesetzt wurde, gibt das Auslesen des Werts „ Qt.ArrowCursor “ zurück.
Siehe auch „ Qt::CursorShape“ , „ QQuickItem::cursor()“ und „ HoverHandler::cursorShape “.
dragThreshold : int
Die Entfernung in Pixeln, um die der Benutzer ein „ eventPoint “ ziehen muss, damit dies als Ziehgeste gewertet wird.
Der Standardwert hängt von der Plattform und der Bildschirmauflösung ab. Er kann auf den Standardwert zurückgesetzt werden, indem man ihn auf „undefined“ setzt. Das Verhalten beim Beginn einer Ziehgeste variiert je nach Handler.
enabled : bool
Wenn ein „ PointerHandler “ deaktiviert ist, werden alle Ereignisse abgelehnt und es werden keine Signale ausgegeben.
Wenn die Eigenschaft „ parent “ eines „ PointerHandler “ auf „ disabled “ gesetzt ist, wird der Handler ebenfalls effektiv deaktiviert, selbst wenn die Eigenschaft „ enabled “ weiterhin auf „ true “ gesetzt ist.
Hinweis: „ HoverHandler “ verhält sich anders: Weitere Informationen finden Sie in der Dokumentation zur Eigenschaft „ enabled “.
exclusiveSignals : enumeration [since 6.5]
Legt die Exklusivität der Signale „ singleTapped “ () und „ doubleTapped “ () fest.
| Konstante | Beschreibung |
|---|---|
NotExclusive | (Standard) „ singleTapped()“ und „ doubleTapped()“ werden sofort ausgelöst, wenn der Benutzer einmal bzw. zweimal tippt. |
SingleTap | singleTapped() wird sofort ausgelöst, wenn der Benutzer einmal tippt, und doubleTapped() wird nie ausgelöst. |
DoubleTap | doubleTapped() wird sofort ausgelöst, wenn der Benutzer zweimal tippt, und singleTapped() wird nie ausgelöst. |
(SingleTap | DoubleTap) | Beide Signale werden bis zum Auslösen von ` QStyleHints::mouseDoubleClickInterval()` verzögert, sodass entweder ` singleTapped()` oder ` doubleTapped()` ausgelöst werden kann, jedoch nicht beide. Wenn jedoch innerhalb von ` mouseDoubleClickInterval` drei oder mehr Tippen erfolgen, wird keines der beiden Signale ausgelöst.Hinweis: Die übrigen Signale wie tapped() und tapCountChanged() werden unabhängig von dieser Eigenschaft immer sofort ausgegeben. |
Diese Eigenschaft wurde in Qt 6.5 eingeführt.
gesturePolicy : enumeration
Die räumliche Bedingung für die Erkennung einer Tipp- oder Langdruckgeste gilt zusätzlich zu der Bedingung, dass das Loslassen vor Ablauf von longPressThreshold erfolgen muss. Sind diese Bedingungen nicht erfüllt, wird das Signal „ tapped “ nicht ausgegeben und „ tapCount “ nicht erhöht. Wird die räumliche Bedingung verletzt, wechselt „ pressed “ sofort von „true“ auf „false“, unabhängig von der Haltezeit.
Die „ gesturePolicy “ beeinflusst zudem das Greifverhalten, wie im Folgenden beschrieben.
| Konstante | Beschreibung |
|---|---|
TapHandler.DragThreshold
Grab beim Drücken: passiv | (Standardwert) Der „ eventPoint “ darf sich nicht nennenswert bewegen. Wenn die Maus, der Finger oder der Stift den systemweiten Drag-Schwellenwert (QStyleHints::startDragDistance) überschreitet, wird die Tippgeste abgebrochen, selbst wenn das Gerät oder der Finger noch gedrückt wird. Diese Richtlinie kann nützlich sein, wenn „ TapHandler “ mit anderen Eingabe-Handlern (z. B. DragHandler) oder ereignisbearbeitenden Elementen (z. B. Qt Quick Controls), da in diesem Fall „ TapHandler “ nicht die exklusive Kontrolle übernimmt, sondern lediglich eine „ passive grab “ auslöst. Das heißt, „ DragThreshold “ eignet sich besonders gut zur Erweiterung bestehenden Verhaltens: Es reagiert auf Tippen, Klicken oder langes Drücken, selbst wenn ein anderes Element oder ein anderer Handler bereits reagiert – möglicherweise sogar in einer anderen Ebene der Benutzeroberfläche. Der folgende Codeausschnitt zeigt einen „ TapHandler “, wie er in einer Komponente verwendet wird; wenn wir jedoch zwei Instanzen der Komponente übereinander stapeln, werden Sie sehen, dass die Handler in beiden gleichzeitig reagieren, wenn ein Druck über beide erfolgt, da der passive „Grab“ die Ereignisweitergabe nicht unterbindet: |
TapHandler.WithinBounds
Grab beim Drücken: exklusiv | Verlässt der „ eventPoint “ die Grenzen des „ parent “-Elements, wird die Tippgeste abgebrochen. Der „ TapHandler “ übernimmt den „ exclusive grab “ beim Drücken, gibt den „Grab“ jedoch frei, sobald die Begrenzungsbedingung nicht mehr erfüllt ist. |
TapHandler.ReleaseWithinBounds
„Grab on press“: exklusiv | Befindet sich der „ eventPoint “ zum Zeitpunkt des Loslassens (die Maustaste wird losgelassen oder der Finger wird abgehoben) außerhalb der Grenzen des „ parent “-Elements, wird keine Tippgeste erkannt. Dies entspricht dem typischen Verhalten von Schaltflächen-Widgets: Sie können einen Klick abbrechen, indem Sie außerhalb der Schaltfläche ziehen, und Sie können Ihre Entscheidung auch noch ändern, indem Sie vor dem Loslassen wieder in die Schaltfläche hineinziehen. Beachten Sie, dass „ TapHandler “ die „ exclusive grab “ beim Drücken übernehmen und bis zum Loslassen beibehalten muss, um diese Geste zu erkennen. |
TapHandler.DragWithinBounds
„Grab“ beim Drücken: exklusiv | Beim Drücken übernimmt „ TapHandler “ den „ exclusive grab “; danach kann der „ eventPoint “ innerhalb der Grenzen des „ parent “-Elements gezogen werden, während die Eigenschaft „ timeHeld “ weiter zählt und das Signal „ longPressed()“ unabhängig von der Ziehdistanz ausgelöst wird. Wie bei „ WithinBounds “ gilt jedoch: Verlässt der Punkt die Grenzen, wird die Tippgeste auf „ canceled()“ gesetzt, „active()“ wird zu „ false “ und „ timeHeld “ hört auf zu zählen. Dies eignet sich für die Implementierung von „Drücken-Ziehen-Loslassen“-Komponenten wie Menüs, bei denen ein einzelnes ` TapHandler ` das Drücken erkennt, ` timeHeld ` eine „Öffnungsanimation“ auslöst und der Benutzer anschließend zu einem Menüelement ziehen und loslassen kann, ohne dabei jemals die Grenzen der übergeordneten Szene zu verlassen, die das Menü enthält. Dieser Wert wurde in Qt 6.3 hinzugefügt. |
Die Beispiele unter „Qt Quick – Pointer Handlers“ veranschaulichen einige Anwendungsfälle hierfür.
Hinweis: Wenn Sie feststellen, dass „ TapHandler “ in Fällen reagiert, die mit einem anderen Verhalten in Konflikt stehen, sollten Sie zunächst überlegen, welche „ gesturePolicy “ geeignet ist. Wenn Sie das Problem nicht durch Ändern von „ gesturePolicy “ beheben können, ist es in manchen Fällen besser, „ grabPermissions “ anzupassen – entweder in diesem Handler oder in einem anderen Handler, der verhindern soll, dass „ TapHandler “ reagiert.
grabPermissions : flags
Diese Eigenschaft legt die Berechtigungen fest, wenn die Logik dieses Handlers beschließt, die exklusive Grab-Kontrolle zu übernehmen, oder wenn sie aufgefordert wird, die Übernahme oder Aufhebung der Grab-Kontrolle durch einen anderen Handler zu genehmigen.
| Konstante | Beschreibung |
|---|---|
PointerHandler.TakeOverForbidden | Dieser Handler übernimmt weder die Grab-Berechtigung von einem Item oder Handler irgendeines Typs noch erteilt er diese. |
PointerHandler.CanTakeOverFromHandlersOfSameType | Dieser Handler kann den exklusiven Zugriff von einem anderen Handler derselben Klasse übernehmen. |
PointerHandler.CanTakeOverFromHandlersOfDifferentType | Dieser Handler kann den exklusiven Zugriff von jedem beliebigen Handler übernehmen. |
PointerHandler.CanTakeOverFromItems | Dieser Handler kann das exklusive „Grab“ von jedem beliebigen Item-Typ übernehmen. |
PointerHandler.CanTakeOverFromAnything | Dieser Handler kann das exklusive „Grab“ von jedem beliebigen Item- oder Handler-Typ übernehmen. |
PointerHandler.ApprovesTakeOverByHandlersOfSameType | Dieser Handler erteilt einem anderen Handler derselben Klasse die Berechtigung, den Zugriff zu übernehmen. |
PointerHandler.ApprovesTakeOverByHandlersOfDifferentType | Dieser Handler erteilt jedem beliebigen Handler die Erlaubnis, die exklusive Kontrolle zu übernehmen. |
PointerHandler.ApprovesTakeOverByItems | Dieser Handler erteilt jedem beliebigen Item die Erlaubnis, den „Grab“ zu übernehmen. |
PointerHandler.ApprovesCancellation | Dieser Handler lässt zu, dass sein Grab auf null gesetzt wird. |
PointerHandler.ApprovesTakeOverByAnything | Dieser Handler erteilt jedem beliebigen Item- oder Handler-Typ die Erlaubnis, den „Grab“ zu übernehmen. |
Die Standardeinstellung ist „ PointerHandler.CanTakeOverFromItems | PointerHandler.CanTakeOverFromHandlersOfDifferentType | PointerHandler.ApprovesTakeOverByAnything “, was die meisten Übernahme-Szenarien zulässt, aber beispielsweise verhindert, dass sich zwei „PinchHandler“ um dieselben Berührungspunkte streiten.
longPressThreshold : real
Die Zeit in Sekunden, die ein „ eventPoint “ gedrückt gehalten werden muss, um eine Langdruckgeste auszulösen und das Signal „ longPressed()“ auszusenden, sofern der Wert größer als „ 0 “ ist. Wird der Punkt vor Ablauf dieser Zeitgrenze losgelassen, kann ein „Tap“ erkannt werden, sofern die Einschränkung „ gesturePolicy “ erfüllt ist. Wenn „ longPressThreshold “ auf „ 0 “ gesetzt ist, ist der Timer deaktiviert und das Signal wird nicht ausgelöst. Wenn „ longPressThreshold “ auf „ undefined “ gesetzt ist, wird stattdessen der Standardwert verwendet, der über diese Eigenschaft ausgelesen werden kann.
Der Standardwert ist QStyleHints::mousePressAndHoldInterval(), umgerechnet in Sekunden.
margin : real
Der Randbereich außerhalb der Grenzen des „ parent “-Elements, innerhalb dessen ein „ eventPoint “ diesen Handler aktivieren kann. Bei einer „ PinchHandler “, bei der die „ target “ gleichzeitig die „ parent “ ist, empfiehlt es sich beispielsweise, diesen Wert auf mindestens die Hälfte der Breite eines typischen Benutzerfingers festzulegen, damit die Pinch-Geste auch dann noch möglich ist, wenn die „ parent “ auf eine sehr kleine Größe verkleinert wurde. Oder wenn eine auf „ TapHandler “ basierende Schaltfläche nahe am Bildschirmrand platziert wird, kann dies zur Einhaltung des Fitts’schen Gesetzes genutzt werden: Mausklicks am Bildschirmrand werden auch dann registriert, wenn die Schaltfläche optisch um einige Pixel vom Rand entfernt ist.
Der Standardwert ist 0.

parent : Item
Die „ Item “, die den Geltungsbereich des Handlers darstellt; das „Item“, in dem er deklariert wurde. Der Handler verarbeitet Ereignisse im Namen dieses „Item“, was bedeutet, dass ein Zeigerereignis relevant ist, wenn mindestens eines seiner „ eventPoints “ innerhalb des „Item“ auftritt. Anfänglich ist „ target() “ identisch, kann jedoch neu zugewiesen werden.
Siehe auch „ target “ und „ QObject::parent()“.
point : handlerPoint [read-only]
Das Objekt „ eventPoint “, das derzeit bearbeitet wird. Wenn gerade kein Punkt bearbeitet wird, wird dieses Objekt auf die Standardwerte zurückgesetzt (alle Koordinaten sind 0).
pressed : bool [read-only]
Gilt immer dann, wenn die Maus oder der Berührungspunkt gedrückt wird und jede Bewegung seit dem Drücken den aktuellen „ gesturePolicy “ entspricht. Wenn der „ eventPoint “ losgelassen wird oder die Richtlinie verletzt wird, wechselt „pressed“ zu „false“.
tapCount : int [read-only]
Die Anzahl der Tippen, die innerhalb der zeitlichen und räumlichen Grenzen stattgefunden haben, um als eine einzige Geste gewertet zu werden. Der Zähler wird auf 1 zurückgesetzt, wenn sich der Button geändert hat. Um beispielsweise ein dreifaches Tippen zu erkennen, kannst du Folgendes schreiben:
Rectangle {
width: 100; height: 30
signal tripleTap
TapHandler {
acceptedButtons: Qt.AllButtons
onTapped: if (tapCount == 3) tripleTap()
}
}target : Item
Das Element, auf das dieser Handler einwirkt.
Standardmäßig entspricht es dem „ parent “, also dem Element, in dem der Handler deklariert ist. Manchmal kann es jedoch sinnvoll sein, das Ziel auf ein anderes Element festzulegen, um Ereignisse in einem Element zu verarbeiten, aber ein anderes Element zu bearbeiten; oder auf „ null “, um das Standardverhalten zu deaktivieren und stattdessen etwas anderes auszuführen.
timeHeld : real [read-only]
Die Zeit in Sekunden, die ein gedrückter Punkt gehalten wurde, ohne den Ziehschwellenwert zu überschreiten. Dieser Wert wird mindestens einmal pro gerendertem Frame aktualisiert, wodurch eine Animation gerendert werden kann, die den Fortschritt hin zu einer Aktion anzeigt, die durch einen langen Druck ausgelöst wird. Es ist auch möglich, je nach Dauer des Drucks eine von mehreren Aktionen auszulösen.
Ein Wert kleiner als Null bedeutet, dass kein Punkt innerhalb des „ Item “ dieses Handlers gehalten wird.
Hinweis: Wenn „ gesturePolicy “ auf „ TapHandler.DragWithinBounds “ gesetzt ist, hört „ timeHeld “ nicht auf zu zählen, selbst wenn der gedrückte Punkt über den Drag-Schwellenwert hinausbewegt wird, sondern erst, wenn der Punkt den „ bounds “ des „ parent “-Elements verlässt.
Signal-Dokumentation
canceled(eventPoint point)
Wenn dieser Handler das angegebene „ point “ bereits ergriffen hat, wird dieses Signal ausgelöst, sobald die Ergreifung von einem anderen Pointer-Handler oder Item übernommen wird.
Hinweis: Der entsprechende Handler ist „ onCanceled “.
doubleTapped(eventPoint eventPoint, Qt::MouseButton button)
Dieses Signal wird ausgelöst, wenn das Element „ parent “ innerhalb eines kurzen Zeitraums (QStyleHints::mouseDoubleClickInterval()) und einer kurzen Entfernung (QStyleHints::mouseDoubleClickDistance() oder QStyleHints::touchDoubleTapDistance()) zweimal angetippt wird. Dieses Signal tritt immer nach „ singleTapped “, „ tapped “ und „ tapCountChanged “ auf. Der Signalparameter „ eventPoint “ enthält Informationen aus dem Release-Ereignis über den Punkt, der angetippt wurde, und „ button “ ist der „ mouse button “, auf den geklickt wurde, bzw. „ NoButton “ auf einem Touchscreen.
Hinweis: Der entsprechende Handler lautet „ onDoubleTapped “.
grabChanged(PointerDevice::GrabTransition transition, eventPoint point)
Dieses Signal wird ausgelöst, wenn sich der „Grab“ in einer Weise verändert hat, die für diesen Handler relevant ist.
Das Verb „ transition “ gibt an, was geschehen ist. Das Objekt „ point “ ist der Punkt, der ergriffen oder freigegeben 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 seine bisherige exklusive Belegung aufgegeben. |
PointerDevice.CancelGrabExclusive | Die exklusive Zugriffsberechtigung dieses Handlers wurde übernommen oder aufgehoben. |
PointerDevice.GrabPassive | Dieser Handler hat eine passive Zugriffskontrolle erworben, um den ` point` zu überwachen. |
PointerDevice.UngrabPassive | Dieser Handler hat seine bisherige passive Grab-Kontrolle aufgegeben. |
PointerDevice.CancelGrabPassive | Die bisherige passive Zugriffskontrolle dieses Handlers wurde abnormal beendet. |
Hinweis: Der entsprechende Handler ist „ onGrabChanged “.
longPressed()
Dieses Signal wird ausgelöst, wenn das Element „ parent “ länger als „ longPressThreshold “ gedrückt und gehalten wird. Das heißt: Wenn Sie einen Berührungspunkt oder eine Schaltfläche gedrückt halten und dabei die Bewegung den Schwellenwert für das Ziehen nicht überschreitet, wird das Signal „ longPressed “ in dem Moment ausgelöst, in dem „ timeHeld “ den Wert „ longPressThreshold “ überschreitet.
Hinweis: Der entsprechende Handler lautet „ onLongPressed “.
singleTapped(eventPoint eventPoint, Qt::MouseButton button)
Dieses Signal wird ausgelöst, wenn einmal auf das Element „ parent “ getippt wird. Nach Ablauf einer Zeit, die größer ist als „ QStyleHints::mouseDoubleClickInterval “, kann erneut darauf getippt werden; ist die Zeit bis zum nächsten Tippen jedoch kürzer, erhöht sich „ tapCount “. Der Signalparameter „ eventPoint “ enthält Informationen aus dem Release-Ereignis über den Punkt, auf den getippt wurde, und „ button “ ist das „ mouse button “, auf das geklickt wurde, bzw. „ NoButton “ auf einem Touchscreen.
Hinweis: Der entsprechende Handler lautet „ onSingleTapped “.
tapCountChanged()
Dieses Signal wird ausgelöst, wenn das Element „ parent “ einmal oder mehrmals (innerhalb eines festgelegten Zeit- und Abstandsbereichs) angetippt wird und wenn sich der aktuelle Wert „ tapCount “ vom vorherigen Wert „ tapCount “ unterscheidet.
Hinweis: Der zugehörige Handler ist „ onTapCountChanged “.
tapped(eventPoint eventPoint, Qt::MouseButton button)
Dieses Signal wird jedes Mal ausgelöst, wenn auf das Element „ parent “ getippt wird.
Das heißt: Wenn Sie einen Berührungspunkt oder eine Schaltfläche innerhalb eines Zeitraums drücken und loslassen, der kürzer ist als „ longPressThreshold “, und dabei keine Bewegung den Ziehschwellenwert überschreitet, wird das Signal „ tapped “ zum Zeitpunkt des Loslassens ausgelöst. Der Signalparameter „ eventPoint “ enthält Informationen aus dem Loslassereignis über den Punkt, der angetippt wurde, und „ button “ ist der „ mouse button “, der angeklickt wurde, bzw. „ NoButton “ auf einem Touchscreen.
import QtQuick
Rectangle {
width: 100
height: 100
TapHandler {
acceptedButtons: Qt.LeftButton | Qt.RightButton
onTapped: (eventPoint, button)=> console.log("tapped", eventPoint.device.name,
"button", button,
"@", eventPoint.scenePosition)
}
}Hinweis: Der entsprechende Handler lautet „ onTapped “.
© 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.



