D'accord, en utilisant QT, j'aimerais savoir comment détecter l'état actuel de la souris à tout moment - sans em> un soureu de souris. P>
Utilisation de Qcursor :: POS (), vous pouvez obtenir sa position, mais y a-t-il un moyen de déterminer l'état actuel des boutons? P>
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. P>
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) . p>
3 Réponses :
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? p>
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. P>
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 i> 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)
Eh bien, comme je l'ai dit dans la question, il est toujours agréable de savoir s'il y a un moyen de le faire à Qt4, même s'il n'y a pas dans Qt3. Si rien d'autre, je pourrais l'utiliser dans une future version de l'application en question (et il est tout simplement toujours bon d'en savoir plus sur ce genre de chose). La version actuelle, cependant, est dans Qt3, alors à moins qu'il y ait un moyen de le faire à Qt3, puis je n'ai pas de chance pour le moment. Mais si c'est dans Qt4 et non Qt3, cela va montrer que TrollTech continue d'améliorer QT et de faire une meilleure boîte à outils.
Mise à jour pour QT5 (5.3.2):
if (QGuiApplication::mouseButtons() == Qt::LeftButton) { ... }
MouseButTons () code> fonctionner là-bas. Vous devrez inclure code> li>
ul> p>