10
votes

Comment détecter l'état de la souris en qt sans sourire de souris

D'accord, en utilisant QT, j'aimerais savoir comment détecter l'état actuel de la souris à tout moment - sans un soureu de souris.

Utilisation de Qcursor :: POS (), vous pouvez obtenir sa position, mais y a-t-il un moyen de déterminer l'état actuel des boutons?

Fondamentalement, je cherche à vérifier l'état de la souris lorsqu'une minuterie s'éteint, elle ne sera donc pas liée à des souris de souris particuliers, et il n'y a donc pas de doute à doseur à interroger. J'ai besoin de savoir comment interroger l'état de la souris - en particulier l'état des boutons - sans avoir de sourire de souris.

Oh, et j'utilise Qt 3, donc si une telle fonction a été ajoutée à Qt 4 mais n'est pas dans Qt 3, cela ne m'aidait pas beaucoup (bien que cela soit toujours agréable de savoir) .


0 commentaires

3 Réponses :


1
votes

est-ce une exigence difficile que vous n'utilisez pas de souris de souris? Ou pouvez-vous utiliser des souris de souris de souris de souris indirectement?

Si vous créez une variable booléenne pour chaque bouton et mettez-la à la mise à jour avec des événements pressés par la souris / publié, vous pouvez simplement regarder les valeurs des booléens pertinents lorsque la minuterie s'éteint.


5 commentaires

Il ne peut pas être lié à l'événement. Je veux dire, s'il y avait une fonction qui vous a donné l'état actuel de la souris en retournant un soureu de souris, ce serait bien, mais je ne peux pas gérer un événement. Je dois être capable de simplement interroger pour l'état actuel de la souris sans avoir à craindre quels événements ont ou n'ont pas été licenciés.


Pourquoi n'avez-vous pas accès aux événements? Êtes-vous inquiet pour la performance? Comment votre code est-il exécuté dans une interface graphique sans expédition en raison d'un événement?


C'est un système complexe qui n'est certainement pas exempt de bugs, et je ne peux pas vous garantir que je ne manquerai aucun événement. Donc, alors qu'il est mis en place pour que la minuterie devrait ne s'éteint que lorsque la souris est dans le bon état, je dois être capable de vérifier l'état de la souris quand il s'éteint afin de garantir que non Les événements sont tombés à travers les fissures.


J'apprécie la fragilité des systèmes compliqués. :) Je recommanderais d'aller avec la solution de Dave, mais je ne fais que sauver les drapeaux eux-mêmes au lieu de les convertir en booléens. Même si vous laissez tomber quelques événements (bien que QT devait livrer chaque événement de la souris), vous serez aussi à jour que possible jusqu'à ce que vous ayez accès à Qt4.


L'affaire est lorsque vous avez un widget intégré d'une autre application, les événements de QT ne vous arrivent tout simplement pas lorsque vous les attendez. Donc, je me suis retrouvé à nouveau avec le vérificateur de niveau de quincaillerie le plus bas: getasynckeystate (Win32) pour obtenir l'état du bouton de la souris (index 0,1,2)




0
votes

Mise à jour pour QT5 (5.3.2):

if (QGuiApplication::mouseButtons() == Qt::LeftButton) { ... }
  • J'utilise une qaplication, mais il n'y a pas de MouseButTons () code> fonctionner là-bas. Vous devrez inclure code> li> ul> p>


0 commentaires