In meinem Programm möchte ich mouseMoveEvent (QMouseEvent * event) immer dann aufgerufen werden, wenn sich die Maus bewegt (auch wenn es sich über einem anderen Fenster befindet).Erhalten von MouseMoveEvents in Qt
Gerade jetzt, in meiner mainwindow.cpp Datei, die ich habe:
void MainWindow::mouseMoveEvent(QMouseEvent* event) {
qDebug() << QString::number(event->pos().x());
qDebug() << QString::number(event->pos().y());
}
Dies scheint aber nur aufgerufen werden, wenn ich die Maus, während sie über das Fenster des Programms selbst klicken und ziehen. Ich habe versucht,
setMouseTracking(true);
in Mainwindow Konstruktor aufrufen, aber dies scheint nicht, etwas anders zu machen (nur noch mousemove aufgerufen wird, wenn ich eine Maustaste gedrückt halten, unabhängig davon, wo es ist). Was ist der einfachste Weg, die Mausposition global zu verfolgen?
Danke, das funktioniert für kontinuierliche Updates erhalten, wenn die Maus über das Anwendungsfenster ist, aber wenn die Maus woanders bewegt, wird die Position nicht aktualisiert. – Switch
Um die Maus außerhalb des Fensters zu verfolgen, müssen Sie die Maus greifen (siehe QWidget :: grabMouse()). Da alle Mausereignisse an das Widget gesendet werden, das die Maus gegriffen hat, wird eine normale Interaktion mit anderen Widgets verhindert, es sei denn, Sie greifen die Maus nur, wenn die Maus das Fenster verlässt (im leaveEvent()) und lassen Sie dann die Maustaste los auf enterEvent(). – baysmith
Nach dem Hinzufügen von grabMouse() wird es nur aktualisiert, wenn die Maus das Anwendungsfenster passiert – Switch