PyQt4 MouseMove-Ereignis ohne MousePress
Brauche ich, um zu fangen, wenn ein Benutzer bewegt die Maus über die GUI, aber nicht, wenn Sie die Maustaste gedrückt halten (das wäre etwas anderes).
Kann ich nicht finden, praktisch jede Methode, dies zu tun,
außer in regelmäßigen Abständen finden die Maus-position und überprüfen Sie ihn auf seiner früheren position...
Das wäre zu saugen.
Den mouseMoveEvent wird nur aufgerufen, wenn die Maus bewegt wird, während die linke Maustaste gedrückt ist,
es sei denn natürlich das widget hat 'mouse-tracking'. Mouse-tracking ist keine option für mich, denn das GUI muss sich anders Verhalten, wenn sich die Maus bewegt und die linke Maus-Taste gedrückt wird.
Gibt es eingebaute Methoden, dies zu tun?
(oder einfach alle klugen Ideen?)
zB:
Gibt es eine Möglichkeit zu überprüfen, ob die linke Maustaste gedrückt, zu jeder Zeit?
Oder ein "mouse-hover" - Veranstaltung, die angewendet werden können, um ein QRect (Koordinaten)?
Muchas gracias.
Windows 7 (32)
python 2.7
PyQt4
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der einfachste Weg, dies zu tun ist durch die Installation eines event-filter auf qApp:
Es scheint, Sie haben was falsch verstanden
mouseTracking
tut. Es führt nur dazu, dassmouseMoveEvent
abgefeuert werden, sonst nichts. In anderen Worten, es ist genau das, was Sie brauchen.Prüfen Sie die Veranstaltung - Tasten() um zu sehen, ob irgendeine Taste gedrückt wurde:
setMouseTracking
. Es ist geerbt vonQWidget
. Schauen Sie unterQWidget
.setMouseTracking
Attribut - Sie müssen etwas falsch machen.dir()
oder so etwas wiehasattr(QMainWindow, 'setMouseTracking')
. Dies ist auch der einfachste Weg, um zu überprüfen, dass die bestimmten Versionen von Qt und PyQt (oder PySide) Ausrichtung auf die Unterstützung der Funktion(en) Sie interessiert sind.call setMouseTracking(True) - Methode zuerst. Dann mouseMoveEvent gefeuert wird, ohne dass eine Taste gedrückt.
Als die Leute gesagt haben, der richtige Ansatz zu sein scheint, rufen Sie setMouseTracking(True) auf dem widget. Was ich anmerken möchte ist, dass, nachdem dies erledigt ist, können Sie unterscheiden zwischen Maus Bewegung und Maus wie folgt ziehen:
NoButton
Ereignis, aber funktioniert für dieLeftButton
undRightButton
Veranstaltungen. Für mich ist dies in Ordnung, ich möchte test-Maus-Funktionen, einschließlich Klicks, die 'ziehen' übungen sowohl.