En mi programa, me gustaría que mouseMoveEvent (evento QMouseEvent *) se llame siempre que el mouse se mueva (incluso cuando esté sobre otra ventana).Obteniendo MouseMoveEvents en Qt
En este momento, en mi archivo mainwindow.cpp, que tienen:
void MainWindow::mouseMoveEvent(QMouseEvent* event) {
qDebug() << QString::number(event->pos().x());
qDebug() << QString::number(event->pos().y());
}
pero esto parece ser llamado sólo cuando hago clic y arrastrar el ratón mientras que más de la ventana del programa en sí. He intentado llamar
setMouseTracking(true);
en el constructor del MainWindow, pero esto no parece hacer nada diferente (mouseMoveEvent todavía sólo se llama cuando yo tenga un botón del ratón, independientemente de donde está). ¿Cuál es la forma más fácil de seguir la posición del mouse globalmente?
Gracias, eso funciona para obtener actualizaciones continuas cuando el mouse está sobre la ventana de la aplicación, pero si el mouse se mueve a otra parte, la posición no se actualiza. – Switch
Para rastrear el mouse fuera de la ventana, necesitarás agarrar el mouse (ver QWidget :: grabMouse()). Dado que todos los eventos del mouse se enviarán al widget que ha capturado el mouse, esto evitará la interacción normal con otros widgets, a menos que solo agarre el mouse cuando el mouse abandone la ventana (en leaveEvent()) y luego suelte el mouse en enterEvent(). – baysmith
Después de agregar grabMouse(), solo se actualiza cuando el mouse pasa sobre la ventana de la aplicación – Switch