如何始终获得QT鼠标位置

how to get Qt Mouse Position all the time

本文关键字:鼠标 位置 QT 何始终      更新时间:2023-10-16

所以我一直在为这个问题而苦苦挣扎。我尝试了很多事情,它们似乎都没有用。因此,我想在QT中制作游戏,而我需要的一件事是播放器(目前QRectitem)始终旋转到鼠标位置。我只需要一直读取该位置,所以当我单击或拖动时,不要始终。我怎样才能做到这一点?我设置

    this->setMouseTracking(true);

在继承Qgraphicsview类的类中,我也将重点放在了它上。不知道问题是否出现在覆盖功能(不知道要覆盖哪一个)或焦点。

void Game::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
    qDebug() << QCursor::pos();
}

这样做了,但根本不起作用。顺便说一句,我是noob it QT,这是我的第一个项目。提前致谢!:)

P.S。我确实做了研究,但是如果我以某种方式错过了可以解决这个问题的相同或类似问题的话题,那就粘贴并接受我的道歉。:)

编辑

您可以在QApplication对象上安装事件过滤器,检查鼠标移动事件的接收事件,将结果位置转换为场景,然后使用它来定向矩形。

查看QObject::installEventFilter。事件过滤器非常易于使用。当对象接收鼠标事件时,其坐标在该对象的坐标空间中,因此您需要从该坐标转换为图形场景坐标。可能会进行几次转换,因为您需要使用MAPTO将接收到的位置映射到您的QGraphicsView,然后使用QGraphicsView::mapToScene将其映射到您的场景。

这应该使您非常接近。让我知道您是否需要更多帮助。