在 Qt(C++、MinGW、Windows 7)中,QCursor::setPos(...)
似乎在应用程序级别而不是在系统级别更改光标的位置。例如,如果您拦截 mouseMoveEvent
并取消光标的移动(使用 setMouseTracking(false)
这样您仅在按下鼠标按钮时执行此取消) ,那么只要您按住鼠标按钮,您就不会看到光标移动。但是随后,当您松开按钮并移动一点时,光标将移动到您没有阻止其移动的位置。这种行为正常吗?如何绕过它,以便在系统级别更改鼠标光标?
如果不够清楚,我可以给出代码片段。
最佳答案
移动 QWidget 的光标总是使用小部件的坐标。对于全局鼠标定位,您应该改用桌面小部件 (QDesktopWidget)。您可以通过 QApplication::desktop()
静态函数获取它。示例:
QApplication::desktop()->cursor().setPos(0,0);
这应该将鼠标光标移动到桌面的左上角。
关于c++ - Qt 中奇怪的光标行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13505053/