Nel mio programma, mi piacerebbe avere mouseMoveEvent (evento QMouseEvent *) chiamato ogni volta che il mouse si muove (anche quando è sopra un'altra finestra).Ottenere MouseMoveEvents in Qt
In questo momento, nel mio file mainwindow.cpp, ho:
void MainWindow::mouseMoveEvent(QMouseEvent* event) {
qDebug() << QString::number(event->pos().x());
qDebug() << QString::number(event->pos().y());
}
ma questo sembra essere chiamato solo quando si fa clic e trascinare il mouse, mentre sopra la finestra del programma stesso. Ho provato a chiamare
setMouseTracking(true);
nel costruttore di MainWindow, ma questo non sembra di fare nulla in modo diverso (mouseMoveEvent ancora viene chiamato solo quando tengo un pulsante del mouse verso il basso, indipendentemente da dove si trova). Qual è il modo più semplice per monitorare la posizione del mouse a livello globale?
Grazie, che funziona per ottenere aggiornamenti continui quando il mouse si trova sopra la finestra dell'applicazione, ma se il mouse si sposta altrove, la posizione non viene aggiornata. – Switch
Per tenere traccia del mouse fuori dalla finestra, è necessario afferrare il mouse (vedere QWidget :: grabMouse()). Poiché tutti gli eventi del mouse verranno inviati al widget che ha afferrato il mouse, ciò impedirà la normale interazione con altri widget, a meno che non si aggiri il mouse solo quando il mouse lascia la finestra (in leaveEvent()) e quindi rilascia il mouse su enterEvent(). – baysmith
Dopo aver aggiunto grabMouse(), si aggiorna ancora solo quando il mouse passa sopra la finestra dell'applicazione – Switch