c++ - Qt 中奇怪的光标行为

标签 c++ qt cursor mouse

在 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/

相关文章:

c++ - 指向新对象的智能指针

C++ 静态内部函数

c++ - QFontMetrics 返回宽度非常错误的边界矩形

javascript - 使用 jquery 检测光标是否在定义的区域中

javascript - 自定义 Cursor 代码在 webkit 中带有一个黑色方 block 。我错过了什么吗?

android - 在 Android 中显示来自 Cursor 的数据的问题

c++ - 使用 WinHttp 函数检索 HTTP 文件的时间戳

c++ - SDL:程序运行正常;只绘制两行像素

c++ - Qt 显示应用程序,如果当前正在运行

c++ - QWidget(一个 qlineedit)自动调整内容