Dans mon programme, je voudrais avoir mouseMoveEvent (* QMouseEvent événement) appelé à chaque fois que la souris se déplace (même quand il est sur une autre fenêtre).Obtenir MouseMoveEvents dans Qt
En ce moment, dans mon dossier de mainwindow.cpp, j'ai:
void MainWindow::mouseMoveEvent(QMouseEvent* event) {
qDebug() << QString::number(event->pos().x());
qDebug() << QString::number(event->pos().y());
}
Mais cela semble être appelé que lorsque je clique et faites glisser la souris tout sur la fenêtre du programme lui-même. Je l'ai essayé d'appeler
setMouseTracking(true);
dans le constructeur de MainWindow, mais cela ne semble pas faire quoi que ce soit différemment (mouseMoveEvent est encore appelée que lorsque je détiens un bouton de la souris vers le bas, quel que soit l'endroit où il est). Quel est le moyen le plus simple de suivre la position de la souris dans le monde?
Merci, qui travaille pour obtenir des mises à jour en continu lorsque la souris est sur la fenêtre d'application, mais si la souris se déplace ailleurs, la position ne met pas à jour. – Switch
Pour suivre la souris en dehors de la fenêtre, vous devez saisir la souris (voir QWidget :: grabMouse()). Puisque tous les événements de souris seront envoyés au widget qui a attrapé la souris, cela empêchera une interaction normale avec d'autres widgets, sauf si vous ne saisissez la souris que lorsque la souris quitte la fenêtre (dans leaveEvent()) puis relâchez la souris sur enterEvent(). – baysmith
Après avoir ajouté grabMouse(), il met à jour encore que lorsque la souris passe au-dessus de la fenêtre de l'application – Switch