2010-01-09 5 views

Répondre

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

Cela ne fonctionne pas dans qt4 – weberc2

18

La bonne réponse est peut-être ceci:

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

en fait il n'y a pas de fonction concordante pour appel à

QtKeyEvent::QtKeyEvent(Type type, int key)

mais il y a:

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

+3

Devrait être Qt :: NoModifier pas Qt :: NoModifiers. – Therefore

+2

Il est important de simuler un KeyPress suivi d'un KeyReleased car il y a des objets qui traitent quelque chose quand la clé est relâchée. Un exemple est un QWebView exécutant un JavaScript qui gère les événements keyUp. Ils ne seront générés que si vous publiez un événement KeyRelease. –

+0

Vous pouvez également utiliser 'shareEvent' si vous préférez que le' QKeyEvent' soit alloué sur la pile. –