2010-01-09 93 views

回答

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

這在qt4中不起作用 – weberc2 2013-06-11 18:50:57

18

正確的答案可能是這樣的:

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 2013-05-04 20:56:43

+2

模擬一個KeyPress後面跟着一個KeyReleased是很重要的,因爲有些對象會在釋放鍵時處理某些東西。一個例子是運行處理keyUp事件的JavaScript的QWebView。除非您發佈KeyRelease事件,否則不會生成它們。 – 2014-09-16 21:57:22

+0

如果您希望將'QKeyEvent'分配到堆棧上,您也可以使用'shareEvent'。 – 2016-08-26 01:15:25