Sur cette page

TapHandler QML Type

Gestionnaire des tapotements et des clics. En savoir plus...

Import Statement: import QtQuick
Inherits:

SinglePointHandler

Propriétés

Signaux

Description détaillée

TapHandler est un gestionnaire des tapotements sur un écran tactile ou des clics de souris.

La détection d’un geste de tap valide dépend de la valeur de ` gesturePolicy`. La valeur par défaut est `DragThreshold`, qui exige que la pression et le relâchement soient proches l’un de l’autre, tant dans l’espace que dans le temps. Dans ce cas, TapHandler peut fonctionner en utilisant uniquement une capture passive et n’interfère donc pas avec la transmission d’événements à d’autres éléments ou gestionnaires d’entrée. L’ gesturePolicy par défaut est donc utile lorsque vous souhaitez modifier le comportement d’un contrôle ou d’un élément existant en ajoutant un TapHandler avec des liaisons et/ou des callbacks JavaScript.

Notez que les boutons (tels que QPushButton) sont souvent implémentés de manière à ne pas tenir compte de la proximité entre l’appui et le relâchement : si vous appuyez sur le bouton puis changez d’avis, vous devez faire glisser votre doigt jusqu’au bord du bouton pour annuler le clic. Pour ce cas d’utilisation, définissez l’ gesturePolicy sur 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
    }
}

Pour les gestes à tapotements multiples (double tapotement, triple tapotement, etc.), la distance parcourue ne doit pas dépasser QStyleHints::mouseDoubleClickDistance() avec la souris et QStyleHints::touchDoubleTapDistance() avec le tactile, et le délai entre les tapotements ne doit pas dépasser QStyleHints::mouseDoubleClickInterval().

Voir également MouseArea et Qt Quick Exemples - Gestionnaires de pointeur.

Documentation sur les propriétés

acceptedButtons : flags

Les boutons de la souris pouvant activer ce gestionnaire de pointeur.

Par défaut, cette propriété est définie sur « Qt.LeftButton ». Elle peut être définie sur une combinaison (ou) de boutons de souris et ignorera les événements provenant des autres boutons.

Par exemple, un contrôle peut être configuré pour réagir différemment aux clics gauche et droit, à l’aide de deux gestionnaires :

Item {
    TapHandler {
        onTapped: console.log("left clicked")
    }
    TapHandler {
        acceptedButtons: Qt.RightButton
        onTapped: console.log("right clicked")
    }
}

Remarque : un tapotement sur un écran tactile ou un tapotement avec le stylet sur une tablette graphique simule un clic sur le bouton gauche de la souris. Ce comportement peut être modifié via acceptedDevices ou acceptedPointerTypes.

acceptedDevices : flags

Les types de périphériques de pointage pouvant activer ce gestionnaire de pointeur.

Par défaut, cette propriété est définie sur « PointerDevice.AllDevices ». Si vous la définissez sur une combinaison de types de périphériques séparés par « OU », elle ignorera les événements provenant des périphériques qui ne correspondent pas.

Par exemple, un contrôle pourrait être configuré pour répondre d’une certaine manière aux clics de souris et de stylet, et d’une autre manière aux tapotements sur un écran tactile, à l’aide de deux gestionnaires :

Item {
   TapHandler {
       acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad | PointerDevice.Stylus
       onTapped: console.log("clicked")
   }
   TapHandler {
       acceptedDevices: PointerDevice.TouchScreen
       onTapped: console.log("tapped")
   }
}

Remarque : toutes les plateformesne sontpas encore capables de distinguer la souris du pavé tactile ; et sur celles qui le font, on souhaite souvent que le comportement de la souris et du pavé tactile soit identique.

acceptedModifiers : flags

Si cette propriété est définie, les événements liés au pointeur ne seront pris en compte que si les touches de modification spécifiées sont enfoncées ; dans le cas contraire, ils seront ignorés.

Si cette propriété est définie sur « Qt.KeyboardModifierMask » (valeur par défaut), l’ PointerHandler ignore les touches de modification.

Item Par exemple, une pourrait comporter deux gestionnaires du même type, dont l’un n’est activé que si les touches de modification requises sont enfoncées :

Item {
   TapHandler {
       acceptedModifiers: Qt.ControlModifier
       onTapped: console.log("control-tapped")
   }
   TapHandler {
       acceptedModifiers: Qt.NoModifier
       onTapped: console.log("tapped")
   }
}

Si vous définissez « acceptedModifiers » sur une combinaison « OU » de touches de modification, cela signifie que toutes ces touches doivent être enfoncées pour activer le gestionnaire :

Item {
   TapHandler {
       acceptedModifiers: Qt.ControlModifier | Qt.AltModifier | Qt.ShiftModifier
       onTapped: console.log("control-alt-shift-tapped")
   }
}

Les touches de modification disponibles sont les suivantes :

ConstanteDescription
NoModifierAucune touche de modification n'est autorisée.
ShiftModifierUne touche Maj du clavier doit être enfoncée.
ControlModifierIl faut appuyer sur la touche Ctrl du clavier.
AltModifierIl faut appuyer sur la touche Alt du clavier.
MetaModifierIl faut appuyer sur la touche Meta du clavier.
KeypadModifierUne touche du pavé numérique doit être enfoncée.
GroupSwitchModifierX11 uniquement (sauf si activé sous Windows par un argument de ligne de commande). Une touche Mode_switch du clavier doit être enfoncée.
KeyboardModifierMaskLe gestionnaire ne tient pas compte des modificateurs enfoncés.

Si vous avez besoin d'un comportement encore plus complexe que celui pouvant être obtenu avec des combinaisons de plusieurs gestionnaires et de plusieurs indicateurs de modificateurs, vous pouvez vérifier les modificateurs dans le code 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;
            }
    }
}

Voir également Qt::KeyboardModifier.

acceptedPointerTypes : flags

Les types d'instruments de pointage (doigt, stylet, gomme, etc.) pouvant activer ce gestionnaire de pointeur.

Par défaut, cette propriété est définie sur « PointerDevice.AllPointerTypes ». Si vous la définissez sur une combinaison « OU » de types de périphériques, elle ignorera les événements provenant de périphériques non correspondants devices.

Par exemple, un contrôle pourrait être configuré pour réagir d'une certaine manière aux clics de souris, aux touches tactiles et aux clics de stylet, mais s’effacer s’il est touché avec un outil « gomme » sur une tablette graphique, grâce à deux gestionnaires :

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]

Cette propriété prend la valeur « true » dès lors que ce gestionnaire d’entrée a pris la responsabilité exclusive de la gestion d’un ou plusieurs « eventPoints », en ayant réussi à les «saisir» de manière exclusive. Cela signifie qu’il maintient ses propriétés à jour en fonction des mouvements de ces «eventPoints» et qu’il manipule activement ses « target » (le cas échéant).

cursorShape : Qt::CursorShape

Cette propriété définit la forme du curseur qui s'affichera chaque fois que la souris survolera l'élément parent, à condition que active soit défini sur true.

Les formes de curseur disponibles sont les suivantes :

  • Qt.ArrowCursor
  • Qt.UpArrowCursor
  • Qt.CrossCursor
  • Qt.WaitCursor
  • Qt.IBeamCursor
  • Qt.SizeVerCursor
  • Qt.CursorTailleHoriz
  • Qt.SizeBDiagCursor
  • Qt.SizeFDiagCursor
  • Qt.SizeAllCursor
  • Qt.CurseurVide
  • Qt.CursorDiviséVertical
  • Qt.CursorDiviséHorizontal
  • Qt.CursorMainPointante
  • Qt.CursorInterdit
  • Qt.Cursor« Qu'est-ce que c'est ? »
  • Qt.Curseur-occupé
  • Qt.CursorMainOuverte
  • Qt.CurseurMainFermée
  • Qt.CurseurGlisserCopier
  • Qt.CurseurGlisserDéplacer
  • Qt.DragLinkCursor

La valeur par défaut n'est pas définie, ce qui permet d'afficher l'élément « cursor » de l'parent. Cette propriété peut être réinitialisée à son état initial en lui attribuant la valeur « undefined ».

Remarque : lorsque cette propriété n’a pas été définie, ou qu’elle a été définie sur ` undefined`, la lecture de sa valeur renvoie ` Qt.ArrowCursor`.

Voir également Qt::CursorShape, QQuickItem::cursor() et HoverHandler::cursorShape.

dragThreshold : int

Distance en pixels sur laquelle l'utilisateur doit faire glisser un élément « eventPoint » pour que ce mouvement soit interprété comme un geste de glissement.

La valeur par défaut dépend de la plateforme et de la résolution de l'écran. Elle peut être réinitialisée à sa valeur par défaut en la définissant sur « undefined ». Le comportement lors du début d'un geste de glissement varie selon les gestionnaires.

enabled : bool

Si un PointerHandler est désactivé, il rejettera tous les événements et aucun signal ne sera émis.

Si la propriété « parent » d'une PointerHandler est définie sur « disabled », le gestionnaire sera également désactivé de fait, même si la propriété « enabled » reste définie sur « true ».

Remarque : HoverHandler se comporte différemment : consultez la documentation relative à sa propriété enabled pour plus d’informations.

exclusiveSignals : enumeration [since 6.5]

Détermine l'exclusivité des signaux singleTapped() et doubleTapped().

ConstanteDescription
NotExclusive(valeur par défaut) Les signaux singleTapped() et doubleTapped() sont émis immédiatement lorsque l'utilisateur appuie une ou deux fois, respectivement.
SingleTapsingleTapped() est émis immédiatement lorsque l'utilisateur appuie une fois, et doubleTapped() n'est jamais émis.
DoubleTapdoubleTapped() est émis immédiatement lorsque l’utilisateur appuie deux fois, et singleTapped() n’est jamais émis.
(SingleTap | DoubleTap)Les deux signaux sont différés jusqu’à l’émission de QStyleHints::mouseDoubleClickInterval(), de sorte que soit singleTapped(), soit doubleTapped() peut être émis, mais pas les deux. Cependant, si 3 appuis ou plus se produisent dans un délai de mouseDoubleClickInterval, aucun des deux signaux n’est émis.

Remarque : les autres signaux, tels que tapped() et tapCountChanged(), sont toujours émis immédiatement, quelle que soit cette propriété.

Cette propriété a été introduite dans Qt 6.5.

gesturePolicy : enumeration

La contrainte spatiale pour qu’un geste de tapotement ou d’appui long soit reconnu s’ajoute à la contrainte selon laquelle le relâchement doit avoir lieu avant l’expiration de ` longPressThreshold `. Si ces contraintes ne sont pas respectées, le signal ` tapped ` n’est pas émis et ` tapCount ` n’est pas incrémenté. En cas de violation de la contrainte spatiale, ` pressed ` passe immédiatement de `true` à `false`, quelle que soit la durée de maintien.

L’ gesturePolicy e influe également sur le comportement de la prise, comme décrit ci-dessous.

ConstanteDescription
TapHandler.DragThreshold

Deux boutons « Click Me » qui se chevauchent et qui réagissent tous les deux à un seul appui

Saisie à la pression : passive

(valeur par défaut) L’ eventPoint ne doit pas se déplacer de manière significative. Si la souris, le doigt ou le stylet dépasse le seuil de glissement défini au niveau du système (QStyleHints::startDragDistance), le geste de tapotement est annulé, même si l’appareil ou le doigt reste appuyé. Cette politique peut s’avérer utile lorsque TapHandler doit coopérer avec d’autres gestionnaires d’entrée (par exemple DragHandler) ou des éléments de gestion d’événements (par exemple Qt Quick Controls), car dans ce cas, ` TapHandler ` ne prendra pas le contrôle exclusif, mais se contentera d’un ` passive grab`. Autrement dit, ` DragThreshold ` est particulièrement utile pour enrichir un comportement existant : il réagit à un tapotement, un clic ou un appui prolongé même lorsqu’un autre élément ou gestionnaire réagit déjà, voire dans un autre niveau de l’interface utilisateur. L'extrait de code suivant montre une instance de ` TapHandler ` utilisée dans un composant ; mais si l’on superpose deux instances de ce composant, on constate que les gestionnaires des deux instances réagissent simultanément lorsqu’une pression est exercée sur les deux, car la capture passive n’empêche pas la propagation des événements :
Item {
    width: 120; height: 80

    component Button : Rectangle {
        TapHandler {
            id: tapHandler
            gesturePolicy: TapHandler.DragThreshold // the default
            onTapped: tapFlash.start()
        }
    }

    Button { x: 10; y: 10 }
    Button { x: 30; y: 30 }
}
TapHandler.WithinBounds

Bouton « Cliquez ici » : annulation du clic lorsque la souris sort de la zone

Accrochage au clic : exclusif

Si l’ eventPoint e sort des limites de l’élément « parent », le geste de tapotement est annulé. L’ TapHandler prendra l’ exclusive grab lors de l’appui, mais relâchera la saisie dès que la contrainte de limite ne sera plus respectée.
TapHandler {
    id: tapHandler
    gesturePolicy: TapHandler.WithinBounds
    onTapped: tapFlash.start()
}
TapHandler.ReleaseWithinBounds

glisser un bouton « Click Me » vers l'extérieur, puis le ramener à l'intérieur avant de le lâcher

Saisie à l’appui : exclusive

Au moment du relâchement (lorsque le bouton de la souris est relâché ou que le doigt est retiré), si l'eventPoint se trouve en dehors des limites de l'élément « parent », aucun geste de tap n'est reconnu. Cela correspond au comportement classique des widgets de type bouton : vous pouvez annuler un clic en faisant glisser le curseur à l'extérieur du bouton, et vous pouvez également changer d'avis en le ramenant à l'intérieur du bouton avant de le relâcher. Notez que pour détecter ce geste, il est nécessaire que l’ TapHandler e prenne l’ exclusive grab au moment de l’appui et la conserve jusqu’au relâchement.
TapHandler {
    id: tapHandler
    gesturePolicy: TapHandler.ReleaseWithinBounds
    onTapped: tapFlash.start()
}
TapHandler.DragWithinBounds

Un appui long fait apparaître un menu contextuel proposant des options en haut, au milieu et en bas

Saisie à la pression : exclusive

Lors de l’appui, TapHandler capte l’ parent ( exclusive grab) ; par la suite, l’ eventPoint peut être glissé dans les limites de l’élément , tandis que la propriété timeHeld continue de compter, et le signal longPressed() sera émis quelle que soit la distance de glissement. Cependant, comme pour WithinBounds, si le point sort des limites, le geste de tapotement est canceled(), active() devient false, et timeHeld cesse de compter. Cette fonctionnalité est adaptée à la mise en œuvre de composants de type « appuyer-glisser-relâcher », tels que les menus, dans lesquels un seul TapHandler détecte l’appui, timeHeld déclenche une animation d’« ouverture », puis l’utilisateur peut faire glisser le curseur vers un élément du menu et le relâcher, sans jamais sortir des limites de la scène parente contenant le menu. Cette valeur a été ajoutée dans Qt 6.3.
TapHandler {
    id: menuPopupHandler
    gesturePolicy: TapHandler.DragWithinBounds
    onPressedChanged:
        if (pressed) {
            menu.x = point.position.x - menu.width / 2
            menu.y = point.position.y - menu.height / 2
        } else {
            feedback.text = menu.highlightedMenuItem
            selectFlash.start()
        }
    onCanceled: feedback.text = "canceled"
}

La section « Exemples d’Qt Quick s – Gestionnaires de pointeur » présente quelques cas d’utilisation de ces fonctionnalités.

Remarque : si vous constatez que l’événement « TapHandler » réagit dans des cas qui entrent en conflit avec un autre comportement, la première chose à faire est de déterminer quelle méthode « gesturePolicy » est appropriée. Si vous ne parvenez pas à résoudre le problème en modifiant « gesturePolicy », il est parfois préférable d’ajuster « grabPermissions », soit dans ce gestionnaire, soit dans un autre gestionnaire destiné à empêcher « TapHandler » de réagir.

grabPermissions : flags

Cette propriété définit les autorisations lorsque la logique de ce gestionnaire décide de prendre le contrôle exclusif, ou lorsqu'il est sollicité pour approuver la prise de contrôle ou l'annulation de celle-ci par un autre gestionnaire.

ConstanteDescription
PointerHandler.TakeOverForbiddenCe gestionnaire n’accorde ni ne retire l’autorisation de « grab » à aucun type d’élément (Item) ou de gestionnaire (Handler).
PointerHandler.CanTakeOverFromHandlersOfSameTypeCe gestionnaire peut prendre le contrôle exclusif à un autre gestionnaire de la même classe.
PointerHandler.CanTakeOverFromHandlersOfDifferentTypeCe gestionnaire peut prendre le contrôle exclusif à n’importe quel type de gestionnaire.
PointerHandler.CanTakeOverFromItemsCe gestionnaire peut prendre le contrôle exclusif d’un élément de n’importe quel type.
PointerHandler.CanTakeOverFromAnythingCe gestionnaire peut prendre le « grab » exclusif de n'importe quel type d'élément ou de gestionnaire.
PointerHandler.ApprovesTakeOverByHandlersOfSameTypeCe gestionnaire autorise un autre gestionnaire de la même classe à prendre le contrôle.
PointerHandler.ApprovesTakeOverByHandlersOfDifferentTypeCe gestionnaire autorise n'importe quel type de gestionnaire à prendre le contrôle.
PointerHandler.ApprovesTakeOverByItemsCe gestionnaire autorise n'importe quel type d'élément à prendre le contrôle.
PointerHandler.ApprovesCancellationCe gestionnaire autorise la mise à null de son « grab ».
PointerHandler.ApprovesTakeOverByAnythingCe gestionnaire autorise tout type d’élément ou de gestionnaire à prendre le contrôle.

La valeur par défaut est « PointerHandler.CanTakeOverFromItems | PointerHandler.CanTakeOverFromHandlersOfDifferentType | PointerHandler.ApprovesTakeOverByAnything », ce qui autorise la plupart des scénarios de prise de contrôle tout en évitant, par exemple, que deux PinchHandlers se disputent les mêmes points de contact.

longPressThreshold : real

Durée en secondes pendant laquelle une eventPoint doit être maintenue enfoncée pour déclencher un geste de pression prolongée et émettre le signal longPressed(), si la valeur est supérieure à 0. Si la est relâchée avant l'expiration de ce délai, un tap peut être détecté si la contrainte gesturePolicy est respectée. Si longPressThreshold vaut 0, le chronomètre est désactivé et le signal ne sera pas émis. Si longPressThreshold est défini sur undefined, la valeur par défaut est utilisée à la place et peut être lue à partir de cette propriété.

La valeur par défaut est QStyleHints::mousePressAndHoldInterval() convertie en secondes.

margin : real

La marge située au-delà des limites de l'élément « parent », à l'intérieur de laquelle un « eventPoint » peut activer ce gestionnaire. Par exemple, sur une « PinchHandler » où le « target » correspond également à l’« parent », il est utile de définir cette distance à au moins la moitié de la largeur du doigt d’un utilisateur type, afin que, si la « parent » a été réduite à une très petite taille, le geste de pincement reste possible. De même, si un bouton basé sur l’ TapHandler est placé près du bord de l’écran, cela permet de respecter la loi de Fitts : réagir aux clics de souris au bord de l’écran même si le bouton est visuellement espacé de quelques pixels par rapport à ce bord.

La valeur par défaut est 0.

Rectangle entouré d'une zone de marge permettant une détection tactile étendue

parent : Item

L'objet « Item », qui correspond à la portée du gestionnaire ; l'« Item » dans lequel il a été déclaré. Le gestionnaire traitera les événements pour le compte de cet « Item », ce qui signifie qu'un événement de pointeur est pertinent si au moins l'un de ses « eventPoints » se produit à l'intérieur de l'« Item ». Au départ, target() est identique, mais il peut être réattribué.

Voir également target et QObject::parent().

point : handlerPoint [read-only]

L'eventPoint e actuellement sélectionné. Lorsqu'aucun point n'est sélectionné, cet objet est réinitialisé à ses valeurs par défaut (toutes les coordonnées sont égales à 0).

pressed : bool [read-only]

Cette valeur reste vraie tant que le bouton de la souris ou le point de contact est enfoncé et que tout mouvement effectué depuis cet enfoncement respecte la politique actuelle gesturePolicy. Lorsque le bouton eventPoint est relâché ou que la politique n'est plus respectée, la valeur « pressed » passe à « false ».

tapCount : int [read-only]

Nombre de tapotements survenus dans les limites de temps et d'espace définies pour être considérés comme un seul geste. Le compteur est remis à 1 si le bouton a changé. Par exemple, pour détecter un triple tapotement, vous pouvez écrire :

Rectangle {
    width: 100; height: 30
    signal tripleTap
    TapHandler {
        acceptedButtons: Qt.AllButtons
        onTapped: if (tapCount == 3) tripleTap()
    }
}

target : Item

L'élément que ce gestionnaire va manipuler.

Par défaut, il s’agit de l’ parent, c’est-à-dire l’élément au sein duquel le gestionnaire est déclaré. Cependant, il peut parfois être utile de définir la cible sur un autre élément, afin de gérer les événements au sein d’un élément tout en manipulant un autre ; ou de l’ null, pour désactiver le comportement par défaut et effectuer une autre action à la place.

timeHeld : real [read-only]

Durée, exprimée en secondes, pendant laquelle un point sélectionné a été maintenu enfoncé, sans dépasser le seuil de glissement. Cette valeur est mise à jour au moins une fois par image rendue, ce qui permet de générer une animation illustrant la progression vers une action qui sera déclenchée par un appui prolongé. Il est également possible de déclencher l’une des actions d’une série en fonction de la durée de l’appui.

Une valeur inférieure à zéro signifie qu’aucun point n’est maintenu dans l’ Item de ce gestionnaire.

Remarque : si gesturePolicy est défini sur TapHandler.DragWithinBounds, timeHeld ne cesse de compter que lorsque le point enfoncé sort de la bounds de l’élément parent, même si le point enfoncé a dépassé le seuil de glissement.

Documentation sur les signaux

canceled(eventPoint point)

Si ce gestionnaire a déjà saisi l'point donné, ce signal est émis lorsque la saisie est détournée par un autre gestionnaire de pointeur ou un autre élément.

Remarque : le gestionnaire correspondant est onCanceled.

doubleTapped(eventPoint eventPoint, Qt::MouseButton button)

Ce signal est émis lorsque l'élément « parent » est touché deux fois dans un court laps de temps (QStyleHints::mouseDoubleClickInterval()) et à une courte distance (QStyleHints::mouseDoubleClickDistance() ou QStyleHints::touchDoubleTapDistance()). Ce signal se produit toujours après singleTapped, tapped et tapCountChanged. Le paramètre de signal « eventPoint » contient des informations issues de l'événement de relâchement concernant le point qui a été touché, et « button » correspond à l'élément « mouse button » sur lequel on a cliqué, ou à « NoButton » sur un écran tactile.

Remarque : le gestionnaire correspondant est onDoubleTapped.

grabChanged(PointerDevice::GrabTransition transition, eventPoint point)

Ce signal est émis lorsque le « grab » a subi une modification pertinente pour ce gestionnaire.

Le verbe « transition » indique ce qui s'est passé. L'objet « point » correspond au point qui a été sélectionné ou désélectionné.

Les valeurs valides pour « transition » sont :

ConstanteDescription
PointerDevice.GrabExclusiveCe gestionnaire a pris la responsabilité principale du traitement de l'point.
PointerDevice.UngrabExclusiveCe gestionnaire a renoncé à son acquisition exclusive précédente.
PointerDevice.CancelGrabExclusiveLe contrôle exclusif de ce gestionnaire a été repris ou annulé.
PointerDevice.GrabPassiveCe gestionnaire a acquis une prise passive afin de surveiller l'point.
PointerDevice.UngrabPassiveCe gestionnaire a renoncé à son accès passif précédent.
PointerDevice.CancelGrabPassiveLe « grab » passif précédent de ce gestionnaire s’est terminé de manière anormale.

Remarque : le gestionnaire correspondant est onGrabChanged.

longPressed()

Ce signal est émis lorsque l'élément « parent » est maintenu enfoncé pendant une durée supérieure à longPressThreshold. Autrement dit, si vous maintenez enfoncé un point tactile ou un bouton, sans que le mouvement ne dépasse le seuil de glissement, le signal « longPressed » sera émis dès que timeHeld dépassera longPressThreshold.

Remarque : le gestionnaire correspondant est onLongPressed.

singleTapped(eventPoint eventPoint, Qt::MouseButton button)

Ce signal est émis lorsqu'on appuie une fois sur l'élément « parent ». Après un délai supérieur à QStyleHints::mouseDoubleClickInterval, il est possible d'appuyer à nouveau ; mais si le délai jusqu'au prochain appui est inférieur, tapCount augmentera. Le paramètre de signal eventPoint contient des informations issues de l'événement de relâchement concernant le point sur lequel on a appuyé, et button correspond à l'mouse button sur laquelle on a cliqué, ou à NoButton sur un écran tactile.

Remarque : le gestionnaire correspondant est onSingleTapped.

tapCountChanged()

Ce signal est émis lorsque l'élément « parent » est touché une ou plusieurs fois (dans un intervalle de temps et de distance spécifiés) et lorsque l'tapCount actuelle diffère de la précédente tapCount.

Remarque : le gestionnaire correspondant est onTapCountChanged.

tapped(eventPoint eventPoint, Qt::MouseButton button)

Ce signal est émis chaque fois que l'élément « parent » est touché.

Autrement dit, si vous appuyez puis relâchez un point tactile ou un bouton dans un délai inférieur à longPressThreshold, sans que le mouvement ne dépasse le seuil de glissement, le signal tapped sera émis au moment du relâchement. Le paramètre du signal eventPoint contient des informations issues de l'événement de relâchement concernant le point sur lequel on a appuyé, et button correspond à l'mouse button sur lequel on a cliqué, ou à NoButton sur un écran tactile.

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)
    }
}

Remarque : le gestionnaire correspondant est 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.