La distinction entre simple et double cliquez sur événements dans Qt
J'ai un QAbstractItemView
qui doit réagir à simple et double cliquez sur événements. Les actions sont différentes selon qu'elle était seule clique ou double-clique. Le problème qui se produit est que l'événement de clic est reçu avant la double cliquez sur l'événement.
Est-il recommandé de voie/la meilleure pratique pour faire la distinction entre les deux? Je ne veux pas effectuer le simple clic d'action lorsque l'utilisateur a fait un double-clique.
Je suis à l'aide de Qt 4.6
OriginalL'auteur Jesse Vogt | 2011-01-07
Vous devez vous connecter pour publier un commentaire.
Vous pouvez trouver la réponse dans le fil intitulé Double Cliquez sur la Capture d' sur QtCentre forum;
OriginalL'auteur Piotr Dobrogost
C'est une bonne conception de l'INTERFACE utilisateur de s'assurer que votre unique-des clics et des double-clics sont conceptuellement liés:
Remarquez comment, dans ces exemples, le simple clic d'action est en fait un sous-ensemble de la double-clic. Cela signifie que vous pouvez aller de l'avant et faire un clic normalement, et il suffit de faire l'action supplémentaire si le double-clic.
Si votre interface utilisateur fait quelque chose comme:
Puis vous définissez vos utilisateurs jusqu'à l'échec. Même si ils se souviennent de ce seul clic ne permet versus double-cliquant tout le temps, il est très facile pour le déplacement accidentel de votre souris trop loin tout en double-cliquant ou en attendre trop longtemps.
Edit:
Je suis désolé de l'entendre.
Dans ce cas, j'ai trouvé ces deux articles utiles:
Windows convertit un clic simple dans
double-clique sur
d'ordre supérieur clics
Je suis en désaccord, je crois qu'il y a valide dessins de l'INTERFACE utilisateur, où vous avez besoin de distinguer les deux clics. E. g. <click>: arrêter le lecteur audio, afficher les informations sur l'élément sélectionné. <double-cliquez sur>: même en tant que simple clic en plus: lire l'élément sélectionné. Si vous ne pouvez pas les distinguer, les deux sont licenciés, et si le simple clic est exécuté après le double-clic, puis le lecteur audio sera arrêté.
Avez-vous vu la double-cliquez sur l'événement qui arrivent avant la simple clic? Cela semble très peu probable, puisque le système d'exploitation ne sera pas en mesure de dire c'est un double-cliquez sur l'action jusqu'à ce que après le clic unique a été livré.
non, je n'ai pas. Cependant, Qt/Windows, j'ai vu la suite des événements déclenchés pour chaque double-clic: clic, double clic, clic. Ce qui rend nécessaire que le double cliquez sur les blocs de la prochaine seul clic.
OriginalL'auteur Bill
À l'aide de PySide qui est le binding Python de Qt 4.8, j'ai vu que seul clics de livrer un
QEvent.MouseButtonPress
événement et double clique fournir un seulQEvent.MouseButtonPress
suivi de près par unQEvent.MouseButtonDblClick
. Le délai est d'environ100ms
sur Windows. Cela signifie que vous avez encore un problème si vous avez besoin de différencier les simples et doubles clics.La solution a besoin d'une autre
QTimer
avec un peu plus de retard que la fonction intégrée de retard (l'ajout de certains frais généraux). Si vous observez unQEvent.MouseButtonPress
événement que vous démarrez votre propre minuterie, en cas de timeout c'est un seul clic. Dans le cas d'uneQEvent.MouseButtonDblClick
c'est un double-clic et vous arrêter le retardateur pour éviter de compter comme un seul clic.OriginalL'auteur Trilarion