【发布时间】:2014-10-08 22:46:58
【问题描述】:
我正在使用 Qt 框架,我想在我的应用程序窗口之外生成鼠标事件。
到目前为止,我设法使用以下方法移动鼠标指针:
QGuiApplication::overrideCursor()->setPos(x,y);
如何同时生成鼠标左键单击、中键单击、右键单击和鼠标滚轮移动?
【问题讨论】:
我正在使用 Qt 框架,我想在我的应用程序窗口之外生成鼠标事件。
到目前为止,我设法使用以下方法移动鼠标指针:
QGuiApplication::overrideCursor()->setPos(x,y);
如何同时生成鼠标左键单击、中键单击、右键单击和鼠标滚轮移动?
【问题讨论】:
Qt 无法做到这一点。使用特定于您的目标平台的 API。
【讨论】:
几年前,我编写了一个用于 GUI 测试的驱动程序(用于鼠标和键盘)。驱动程序是为 Windows、Linux 和 MacOS X 开发的。您可以查看here。 Windows 有一个依赖于操作系统的 MouseDriver 实现。您还可以看到其他实现。这是一个开源项目,您可以免费使用它的代码。
【讨论】:
除了第一个答案。例如在 Windows 中:
点击:
mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP,x,y,0,0);
轮子:
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, WHEEL_DELTA, NULL);
更多信息:http://msdn.microsoft.com/en-us/library/windows/desktop/ms646260(v=vs.85).aspx
也可以使用 qt 宏:
#ifdef Q_WS_X11
//Linux
#endif
#ifdef Q_WS_WIN
//Windows
#endif
#ifdef Q_WS_MACX
//Mac
#endif
【讨论】: