Qt: keyPressEvent
-
Ich versuche gerade, das keyPressEvent eines QMainWindows abzufangen.
Erfolg stellt sich nur teilweise ein. Drücke aus Esc fängt er auch,
nur bei Enter haperts.Ich vermute, es liegt an den QLineEdit's auf dem Fenster, die dem Fenster
selbst das Ereignis "wegschnappen". Kann das sein?void MyEditWindow::keyPressEvent(QKeyEvent* event) { /* This function is called when the ueser presses esc, not when he presses enter. Why?!? */ switch( ((QKeyEvent*)event)->key() ) { case Key_Enter: slotSaveExit(); break; case Key_Escape: slotNoSaveExit(); break; default: QMainWindow::keyPressEvent( event ); } }
Wie kann man das Problem sonst lösen?
-
Kommt drauf an, ob die QLineEdits gefocused sind... wenn nein, muss QMainWindow das KeyEvent bekommen...
Ansonsten musst du selber eine Klasse von QLineEdit ableiten und darin keyPressEvent reimplementieren. In dieser keyPressEvent-Funktion checkst du nur, ob die Taste enter ist, wenn ja, dann ignorierst du das event ( ke->ignore() ) Ansonsten rufst du von der übergeordneten Klasse, also QLineEdit, keyPressEvent auf: QLineEdit::keyPressEvent (ke)
-
Hi,
kann man für das entsprechende QLineEdit-Objekt nicht auch einen Eventfilter installieren?Tschau Gartenzwerg
-
ich habs! QLineEdit hat ein signal namens returnPressed(), das man mit connect ganz einfach abfangen kann!! sollte jetzt wohl kein problem mehr sein
-
Danke! Dann werd ich mal mein Glück versuchen.