Seite 1 von 1

[geloest, danke!] keyPressEvent

Verfasst: 30. Juni 2008 10:25
von joebar
Hallo,

ich moechte das keyPressEvent abfangen. Ich habe eine Klasse abgeleitet von QWidget die heisst RenderArea. Dort ist deklariert

Code: Alles auswählen

void keyPressEvent(QKeyEvent *event);
Implementiert ist

Code: Alles auswählen

void RenderArea::keyPressEvent(QKeyEvent *event){
qDebug() << "event gefangen";
// mach was hier
}
Das qDebug Statement wird nie ausgegeben, sprich es wird kein key event aufgezeichnet. Ich hatte versucht das ganze aus dem Qt Tetrix Beispiel zu entnehmen, irgendwie ist mir aber nicht klar was ich denn vergessen haben koennte was dort implementiert ist.

Danke!
J.

Verfasst: 30. Juni 2008 10:46
von archer
Hallo,
hat dein Widget den den Eingabefocus, um Key-Events empfangen zu können?

Siehe Doku:
"A widget must call setFocusPolicy() to accept focus initially and have focus in order to receive a key press event."

Verfasst: 30. Juni 2008 13:27
von joebar
Danke, das hat geholfen. Eine Frage noch, ich dachte dieses setzen des Focus bedeutet welches Widget die Eingabe hat und das aktive ist. Somit habe ich in das Widget geclickt gehabt um ihm den Focus zu geben, aber das hat nicht geholfen. Wieso nicht?

Verfasst: 30. Juni 2008 13:42
von archer
Per Default hat ein Widget Qt::NoFocus, es kann also den Fokus gar nicht bekommen (the widget does not accept focus).
Da hilft auch kein Klicken.
Die FocusPolicy beschreibt wie das Widget den Eingabefokus bekommen kann.
... so habe ich es verstanden...