Getting MouseMoveEvents in Qt

后端 未结 2 1137
攒了一身酷
攒了一身酷 2020-12-09 02:15

In my program, I\'d like to have mouseMoveEvent(QMouseEvent* event) called whenever the mouse moves (even when it\'s over another window).

Right now, in my mainwindo

2条回答
  •  死守一世寂寞
    2020-12-09 02:36

    You can use an event filter on the application.

    Define and implement bool MainWindow::eventFilter(QObject*, QEvent*). For example

    bool MainWindow::eventFilter(QObject *obj, QEvent *event)
    {
      if (event->type() == QEvent::MouseMove)
      {
        QMouseEvent *mouseEvent = static_cast(event);
        statusBar()->showMessage(QString("Mouse move (%1,%2)").arg(mouseEvent->pos().x()).arg(mouseEvent->pos().y()));
      }
      return false;
    }
    

    Install the event filter when the MainWindows is constructed (or somewhere else). For example

    MainWindow::MainWindow(...)
    {
      ...
      qApp->installEventFilter(this);
      ...
    }
    

提交回复
热议问题