2010-01-09 15 views

Odpowiedz

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

To nie działa w qt4 – weberc2

18

Prawidłowa odpowiedź może być tak:

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

w rzeczywistości nie ma pasującej funkcji dla wywołania do

QtKeyEvent::QtKeyEvent(Type type, int key)

ale jest:

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

+3

Powinien być Qt :: NoModifier, a nie Qt :: NoModifiers. – Therefore

+2

Ważne jest, aby symulować KeyPress, a następnie KeyReleased, ponieważ istnieją obiekty, które przetwarzają coś po wydaniu klucza. Przykładem jest QWebView z uruchomionym JavaScriptem obsługującym zdarzenia keyUp. Nie zostaną wygenerowane, dopóki nie opublikujesz zdarzenia KeyRelease. –

+0

Możesz również użyć 'shareEvent', jeśli wolisz, aby' QKeyEvent' był przydzielony na stosie. –

Powiązane problemy