jjzjj

c++ - 如何使用 Qt 防止 QCursor::setPos() 上的 mouseMoveEvent?

我目前正在开发图像查看器应用程序。在这个应用程序中,我有一个所谓的“pan-zoom”功能。这意味着,当按住某个鼠标按钮时,用户可以通过前后平移来缩放图像。它工作正常,但随着使用该功能,鼠标(自然地)在屏幕上上下移动,并会在某个点到达屏幕边界,这将使其停止。相反,我想要一种鼠标保持静止并且只有图像放大率发生变化的行为。我试图通过在QWidget::mouseMoveEvent中调用QCursor::setPos并在处理完移动后将鼠标重置到初始位置来实现这一点。它的工作原理是鼠标几乎保持静止(它来回摆动)。但是,这将导致再次调用鼠标移动事件,从而有效地取消我刚刚所做的调整。这将导致“摆动

《QT从基础到进阶·十七》QCursor鼠标的不同位置坐标获取

一些常用鼠标图形:鼠标光标相对于整个电脑屏幕的位置:QCursor::pos()当前光标相对于当前窗口的位置:this->mapFromGlobal(QCursor::pos())voidMainWindow::mouseReleaseEvent(QMouseEvent*event){QPointpos=event->pos();//相对于当前窗口的位置QPointglobalPos=event->globalPos();//相对于屏幕的全局绝对位置}QWidget*widget=newQWidget();widget.pos();//窗体的左上角的位置在事件中如果操作的界面不响应,比如进入某