내 프로그램에서는 마우스가 움직일 때마다 (심지어 다른 창 위에있을 때도) mouseMoveEvent (QMouseEvent * 이벤트)를 호출하고 싶습니다.Qt에서 MouseMoveEvents 얻기
는 지금, 내 mainwindow.cpp 파일에서, 내가 가진 :
void MainWindow::mouseMoveEvent(QMouseEvent* event) {
qDebug() << QString::number(event->pos().x());
qDebug() << QString::number(event->pos().y());
}
하지만 클릭하고 프로그램 자체의 창 위로 상태에서 마우스를 드래그하는 경우에만 호출 할 것으로 보인다. 나는 MainWindow를 생성자에서
setMouseTracking(true);
를 호출 시도했다, 그러나 이것은 (나는 아래로 마우스 버튼을 누르고 있으면 mouseMoveEvent가 여전히 호출에 관계없이이 곳의) 다른 아무것도하지 않는 것. 전 세계적으로 마우스 위치를 추적하는 가장 쉬운 방법은 무엇입니까?
감사합니다. 마우스가 응용 프로그램 창 위에있을 때 지속적인 업데이트를 얻을 수 있지만 마우스가 다른 곳으로 이동하면 위치가 업데이트되지 않습니다. – Switch
창 밖에서 마우스를 추적하려면 마우스를 가져와야합니다 (QWidget :: grabMouse() 참조). 모든 마우스 이벤트는 마우스를 움켜 잡은 위젯으로 보내 지므로, 마우스가 창을 떠날 때 (leaveEvent())에만 마우스를 잡은 다음 마우스를 놓지 않으면 다른 위젯과의 일반적인 상호 작용을 막을 수 있습니다 on enterEvent(). – baysmith
grabMouse()를 추가 한 후에도 마우스가 응용 프로그램 창 위로 이동할 때만 계속 업데이트됩니다. – Switch