【问题标题】:How can I simulate user interaction (key press event) in Qt?如何在 Qt 中模拟用户交互(按键事件)?
【发布时间】:2011-01-03 08:48:09
【问题描述】:

我需要在 Qt 中模拟“Enter”键事件。我该怎么做?

【问题讨论】:

    标签: qt qt4 keyevent


    【解决方案1】:

    正确的答案可能是这样的:

    QKeyEvent *event = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Enter, Qt::NoModifier);
    QCoreApplication::postEvent (receiver, event);
    

    实际上没有匹配的函数调用

    QtKeyEvent::QtKeyEvent(Type type, int key)

    但是有:

    QtKeyEvent::QtKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers)

    【讨论】:

    • 应该是 Qt::NoModifier 而不是 Qt::NoModifiers。
    • 模拟 KeyPress 后跟 KeyReleased 很重要,因为在释放键时,有些对象会处理某些事情。一个示例是运行处理 keyUp 事件的 JavaScript 的 QWebView。除非您发布 KeyRelease 事件,否则它们不会生成。
    • 如果您希望在堆栈上分配QKeyEvent,也可以使用shareEvent
    【解决方案2】:
    QKeyEvent *event = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Enter);
    QCoreApplication::postEvent (receiver, event)
    

    【讨论】:

      猜你喜欢
      • 2013-09-23
      • 1970-01-01
      • 1970-01-01
      • 2020-09-14
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多