【问题标题】:Generate mouse events using Qt framework使用 Qt 框架生成鼠标事件
【发布时间】:2014-10-08 22:46:58
【问题描述】:

我正在使用 Qt 框架,我想在我的应用程序窗口之外生成鼠标事件。

到目前为止,我设法使用以下方法移动鼠标指针:

QGuiApplication::overrideCursor()->setPos(x,y);

如何同时生成鼠标左键单击、中键单击、右键单击和鼠标滚轮移动?

【问题讨论】:

    标签: c++ qt qt5.3


    【解决方案1】:

    Qt 无法做到这一点。使用特定于您的目标平台的 API。

    【讨论】:

      【解决方案2】:

      几年前,我编写了一个用于 GUI 测试的驱动程序(用于鼠标和键盘)。驱动程序是为 Windows、Linux 和 MacOS X 开发的。您可以查看here。 Windows 有一个依赖于操作系统的 MouseDriver 实现。您还可以看到其他实现。这是一个开源项目,您可以免费使用它的代码。

      【讨论】:

      • 谢谢卡斯塔内达。我的项目也是开源的,所以我想我会使用你的代码,我会在许可证中提到你。您的代码测试得如何?此代码中是否存在任何已知错误?
      • 这段代码使用了大约 3 年。它用于编写 GUI 测试。我认为所有明显的错误都已修复。您应该在代码存储库中找到最新版本的代码,以将可能存在的错误降至最低。
      【解决方案3】:

      除了第一个答案。例如在 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
      

      更多关于宏:http://qt-project.org/doc/qt-5/qtglobal.html

      QSysInfo:http://qt-project.org/doc/qt-5/qsysinfo.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-02
        相关资源
        最近更新 更多