Viadeo Twitter Google Bookmarks ! Facebook Digg del.icio.us MySpace Yahoo MyWeb Blinklist Netvouz Reddit Simpy StumbleUpon Bookmarks Windows Live Favorites 
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Toutes les fonctions  ·  Vues d'ensemble  · 

QTouchEvent

La classe QTouchEvent contient des param�tres qui d�crivent un �v�nement de toucher. Plus d'informations...

#include <QTouchEvent>

Voir la position dans l'arbre des classes.

  

H�ritage

H�rite de QInputEvent.

Cette classe a �t� introduite dans Qt 4.6.

Description d�taill�e

La classe QTouchEvent contient des param�tres qui d�crivent un �v�nement de toucher.

Activation des �v�nements de toucher

Les �v�nements de toucher se produisent lors d'une pression, d'un rel�chement ou d'un mouvement d'un ou plusieurs points de toucher sur un appareil tactile (comme un �cran tactile ou track-pad). Pour recevoir des �v�nements de toucher, les widgets doivent avoir l'attribut Qt::WA_AcceptTouchEventstrue et les �l�ments graphiques doivent avoir l'attribut acceptTouchEvents d�fini � true.

Lors de l'utilisation de widgets bas�s sur QAbstractScrollArea, vous devez activer l'attribut Qt::WA_AcceptTouchEvents sur le viewport de la zone de d�filement.

Comme pour QMouseEvent, Qt capte automatiquement un point de toucher d�s la premi�re pression � l'int�rieur d'un widget, et le widget recevra toutes les mises � jour du point de toucher jusqu'� ce que ce dernier soit rel�ch�. Notez qu'il est possible pour un widget de recevoir des �v�nements pour de nombreux points de toucher. Notez aussi que de multiples widgets peuvent recevoir des �v�nements de toucher en m�me temps.

Gestion des �v�nements

Tous les �v�nements de toucher sont du type QEvent::TouchBegin, QEvent::TouchUpdate ou QEvent::TouchEnd. R�impl�mentez QWidget::event() ou QAbstractScrollArea::viewportEvent() pour les widgets et QGraphicsItem::sceneEvent() pour les �l�ments pr�sents dans une vue graphique pour la r�ception d'�v�nements de toucher.

Les �v�nements QEvent::TouchUpdate et QEvent::TouchEnd sont envoy�s au widget ou � l'�l�ment qui a accept� l'�v�nement QEvent::TouchBegin. Si l'�v�nement QEvent::TouchBegin n'est pas accept� ni filtr� par un filtre d'�v�nements, alors aucun autre �v�nement de toucher ne sera envoy� jusqu'au prochain QEvent::TouchBegin.

La fonction touchPoints() retourne une liste de tous les points de toucher contenus dans le widget. Des informations � propos de chaque point de toucher peuvent �tre r�cup�r�es en utilisant la classe QTouchEvent::TouchPoint. L'�num�ration Qt::TouchPointState d�crit les diff�rents �tats qu'un point de toucher peut avoir.

Livraison et propagation d'�v�nements

Par d�faut, QWidget::event() traduit le premier point de toucher non primaire dans un QTouchEvent � l'int�rieur d'un QMouseEvent. Cela permet d'autoriser les �v�nements de toucher dans les widgets existants qui ne g�rent normalement pas QTouchEvent. Voir ci-dessous pour plus d'informations sur certaines consid�rations sp�ciales n�cessaires lors d'une telle action.

QEvent::TouchBegin est le premier �v�nement de toucher envoy� � un widget. L'�v�nement QEvent::TouchBegin contient un drapeau sp�cial d'admission d'�v�nement qui indique si le receveur veut ou non de l'�v�nement. Par d�faut, l'�v�nement est accept�. Vous devez appeler ignore() si l'�v�nement de toucher n'est pas g�r� par votre widget. L'�v�nement QEvent::TouchBegin est propag� dans la file des widgets parents jusqu'� ce qu'un widget l'accepte avec accept(), ou bien jusqu'� ce qu'un filtre d'�v�nements le consid�re. Pour les QGraphicsItem, l'�v�nement QEvent::TouchBegin est propag� aux �l�ments sous la souris (identique � la propagation des �v�nements de souris pour les QGraphicsItem).

Groupement de points de toucher

Comme mentionn� plus haut, il est possible que plusieurs widgets re�oivent des QTouchEvent en m�me temps. Cependant, Qt assure ne jamais d�livrer de doublons des �v�nements QEvent::TouchBegin au m�me widget. Ces doublons doivent th�oriquement se produire durant la propagation si, par exemple, l'utilisateur a touch� deux widgets s�par�s dans un QGroupBox et que les deux widgets ont ignor� l'�v�nement QEvent::TouchBegin.

Pour �viter cela, Qt va grouper les nouveaux points de toucher ensemble en utilisant les r�gles suivantes :

  • lorsque le premier point de toucher est d�tect�, le widget de destination est d�termin� dans un premier temps par la localisation � l'�cran, puis par les r�gles de propagation ;
  • lorsque d'additionnels points de toucher sont d�tect�s, Qt commence par regarder s'il n'y a pas d�j� des points de toucher actifs sur l'un des anc�tres ou des descendants du widget sous le nouveau point de toucher. S'il y en a, le nouveau point de toucher est group� avec le premier, et est envoy� dans un m�me QTouchEvent au widget qui g�re le premier point de toucher (le widget sous le nouveau point de toucher ne recevra pas d'�v�nement).

Cela rend possible que plusieurs widgets d'un m�me parent puissent g�rer les �v�nements de toucher ind�pendamment, tout en assurant que la s�quence de QTouchEvent soit toujours correcte.

Les �v�nements de souris et les points de toucher primaires

La livraison de QTouchEvent est ind�pendante de celle de QMouseEvent. Sur certains syst�mes de fen�trage, les �v�nements de souris sont aussi envoy�s depuis le point de toucher primaire. Cela signifie qu'il est possible pour votre widget de recevoir � la fois des �v�nements de QTouchEvent et de QMouseEvent pour un m�me point d'interaction avec l'utilisateur. Vous pouvez utiliser la fonction QTouchEvent::TouchPoint::isPrimary() pour identifier le point de toucher primaire.

Notez que sous certains syst�mes de fen�trage, il est possible de recevoir des �v�nements de toucher sans point de toucher primaire. Tout cela signifie qu'il n'y aura pas d'�v�nement de souris g�n�r� pour les points de toucher dans le QTouchEvent.

Mises en garde

  • Comme mentionn� ci-dessus, l'activation des �v�nements de toucher signifie que de multiples widgets pourront �tre les r�cepteurs d'�v�nements de toucher de mani�re simultan�e. Combin� avec la gestion par d�faut de QWidget::event() pour les QTouchEvent, cela vous donne une grande flexibilit� dans la conception d'interfaces utilisateur tactiles. Soyez avertis de ce que cela implique. Par exemple, il est possible que l'utilisateur d�place un QSlider d'un doigt et appuie sur un QPushButton d'un autre en m�me temps. Les signaux �mis par ces widgets sont dans ce cas de figure entrelac�s.
  • La r�cursivit� � l'int�rieur de la boucle d'�v�nements utilisant l'une des m�thodes exec() (par exemple, QDialog::exec() ou QMenu::exec()) dans un gestionnaire d'�v�nements QTouchEvent n'est pas support�e. Puisqu'il y a de multiples receveurs d'�v�nements, la r�cursivit� peut poser des probl�mes, incluant la perte d'�v�nements et les boucles infinies inattendues.
  • Les QTouchEvent ne sont pas affect�s par une saisie de souris ou par un widget pop-up actif. Le comportement des QTouchEvent est ind�fini lors de l'ouverture d'une pop-up ou lors de la saisie de la souris lorsqu'il y a plus d'un point de toucher actif.

Voir aussi QTouchEvent::TouchPoint, Qt::TouchPointState, Qt::WA_AcceptTouchEvents et QGraphicsItem::acceptTouchEvents().

Type

enum QTouchEvent::DeviceType

Cette �num�ration repr�sente le type du mat�riel qui a g�n�r� un QTouchEvent.

Constante Valeur Description
QTouchEvent::TouchScreen   Pour ce type de mat�riel, la surface de toucher et d'affichage sont int�gr�s. Cela signifie que la surface et l'affichage ont typiquement la m�me taille, de telle mani�re qu'il y ait une relation directe entre les positions et les coordonn�es physiques des points de toucher retourn�es par QTouchEvent::TouchPoint. Comme r�sultat, Qt permet � l'utilisateur d'interagir directement avec de multiples QWidget et QGraphicsItem en m�me temps.
QTouchEvent::TouchPad 1 Pour ce type de mat�riel, la surface de toucher est s�par�e de l'affichage. Il n'y a pas de relation directe entre la position de toucher physique et les coordonn�es � l'�cran. � la place, elles sont calcul�es relativement � la position de la souris actuelle, et l'utilisateur doit utiliser le touch-pad pour d�placer ce point de r�f�rence. � la diff�rence des �crans tactiles, Qt permet aux utilisateurs d'interagir avec un unique QWidget ou QGraphicsItem � la fois.

Fonctions membres

QTouchEvent::QTouchEvent ( QEvent::Type eventType, QTouchEvent::DeviceType deviceType = TouchScreen, Qt::KeyboardModifiers modifiers = Qt::NoModifier, Qt::TouchPointStates touchPointStates = 0, const QList<QTouchEvent::TouchPoint> & touchPoints = QList<QTouchEvent::TouchPoint> () )

Construit un QTouchEvent avec les eventType, deviceType et touchPoints donn�s. Les touchPointStates et modifiers sont les �tats du point de toucher actuel et les modificateurs de clavier au moment de l'�v�nement.

QTouchEvent::~QTouchEvent ()

D�truit le QTouchEvent.

QTouchEvent::DeviceType QTouchEvent::deviceType () const

Retourne le Type de mat�riel de toucher, qui est de type DeviceType.

Qt::TouchPointStates QTouchEvent::touchPointStates () const

Retourne une op�ration binaire OU de tous les �tats de points de toucher pour cet �v�nement.

const QList<QTouchEvent::TouchPoint> & QTouchEvent::touchPoints () const

Retourne la liste des points de toucher contenus dans l'�v�nement de toucher.

QWidget * QTouchEvent::widget () const

Retourne le widget sur lequel l'�v�nement s'est produit.

Remerciements

Merci � Louis du Verdier pour la traduction et � Jonathan Courtois ainsi qu'� Claude Leloup pour leur relecture !

Publicit�

Best Of

Actualit�s les plus lues

Semaine
Mois
Ann�e
  1. � Quelque chose ne va vraiment pas avec les d�veloppeurs "modernes" �, un d�veloppeur � "l'ancienne" critique la multiplication des biblioth�ques 82
  2. Apercevoir la troisi�me dimension ou l'utilisation multithread�e d'OpenGL dans Qt, un article des Qt Quarterly traduit par Guillaume Belz 0
  3. Les d�veloppeurs ignorent-ils trop les failles d�couvertes dans leur code ? Prenez-vous en compte les remarques des autres ? 17
  4. BlackBerry 10 : premi�res images du prochain OS de RIM qui devrait int�grer des widgets et des tuiles inspir�es de Windows Phone 0
  5. Quelles nouveaut�s de C++11 Visual C++ doit-il rapidement int�grer ? Donnez-nous votre avis 10
  6. Adieu qmake, bienvenue qbs : Qt Building Suite, un outil d�claratif et extensible pour la compilation de projets Qt 17
  7. 2017 : un quinquennat pour une nouvelle version du C++ ? Possible, selon Herb Sutter 6
Page suivante

Le blog Digia au hasard

Logo

D�ploiement d'applications Qt Commercial sur les tablettes Windows 8

Le blog Digia est l'endroit privil�gi� pour la communication sur l'�dition commerciale de Qt, o� des r�ponses publiques sont apport�es aux questions les plus pos�es au support. Lire l'article.

Communaut�

Ressources

Liens utiles

Contact

  • Vous souhaitez rejoindre la r�daction ou proposer un tutoriel, une traduction, une question... ? Postez dans le forum Contribuez ou contactez-nous par MP ou par email (voir en bas de page).

Qt dans le magazine

Cette page est une traduction d'une page de la documentation de Qt, �crite par Nokia Corporation and/or its subsidiary(-ies). Les �ventuels probl�mes r�sultant d'une mauvaise traduction ne sont pas imputables � Nokia. Qt 4.7
Copyright © 2012 Developpez LLC. Tous droits r�serv�s Developpez LLC. Aucune reproduction, m�me partielle, ne peut �tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'� 3 ans de prison et jusqu'� 300 000 E de dommages et int�r�ts. Cette page est d�pos�e � la SACD.
Vous avez d�nich� une erreur ? Un bug ? Une redirection cass�e ? Ou tout autre probl�me, quel qu'il soit ? Ou bien vous d�sirez participer � ce projet de traduction ? N'h�sitez pas � nous contacter ou par MP !
 
 
 
 
Partenaires

H�bergement Web