如何在Qt中模拟用户交互(按键事件)?

29
我需要在Qt中模拟"Enter"键事件。我该怎么做?
2个回答

27

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

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)


3
应该使用Qt::NoModifier而不是Qt::NoModifiers。 - Therefore
2
重要的是模拟一个KeyPress事件后跟一个KeyReleased事件,因为有些对象在按键释放时会处理某些内容。例如,一个运行处理keyUp事件的JavaScript的QWebView。除非您发布一个KeyRelease事件,否则它们不会被生成。 - Fappaz
如果您更喜欢在堆栈上分配QKeyEvent,则也可以使用shareEvent - Kyle Strand

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接