【问题标题】:How to simulate mouse event with Qt?如何用 Qt 模拟鼠标事件?
【发布时间】:2014-01-02 18:06:24
【问题描述】:

我想用 Qt 模拟鼠标事件。例如,当我在键盘上按下一个键时,程序可以模拟鼠标点击事件。我已经尝试了下面的代码,但是当我按“K”时,程序停止并给我一个错误:

The program has unexpectedly finished.

案例 Qt::Key_K: QMouseEvent *mEvnPress; QMouseEvent *mEvnRelease; mEvnPress = new QMouseEvent(QEvent::MouseButtonPress, pos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); mEvnRelease = new QMouseEvent(QEvent::MouseButtonRelease, pos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); QCoreApplication::sendEvent(QWidget::focusWidget(),mEvnPress); QCoreApplication::sendEvent(QWidget::focusWidget(),mEvnRelease); 休息;

【问题讨论】:

  • 这个错误还有更多问题吗?是崩溃吗?当您使用调试器或 QtCreator 运行它时会发生什么?它会停在某条线上吗?
  • 它可以正常运行并在qtcreator中显示主窗口。并且没有'程序意外完成'没有更多的输出。当我按下“K”键时,主窗口也会显示出来。
  • sendEvent 的第一个参数似乎很奇怪。您正在将事件发送到最后聚焦的小部件。 focusWidget 可以返回 NULL 吗?也许您应该尝试将其发送到主窗口,看看是否有效。

标签: c++ qt mouseevent


【解决方案1】:

QtTestLib。它专为编写测试而设计,它有 mouseClick 可以满足您的需求。

如果您不想使用此模块,您可以随时查看其源代码并了解如何正确模拟鼠标事件。

【讨论】:

    【解决方案2】:

    您必须使用QtestEventList 类。使用addmouseclick 添加事件然后进行模拟。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      相关资源
      最近更新 更多