Qt - QDialog, QLineEdit ungewollte Dialogbeendigung



  • Hallo, ich soll ein Qt-Programm überarbeiten und dabei ergeben sich für mich als Anfänger doch diverse Probleme und Fragen.

    Qt-Version: 4.4.3

    In einem QDialog wird eine QDialogButtonBox angelegt.

    In dem Dialog gibt es ebenfalls ein QTabWidget in dem diverse tabs erzeugt werden.
    In jedem dieser tabs gibt es auch ein QLineEdit.

    Wenn ich jetzt ein return in so einem QLineEdit drücke. Wird dieser bis zur QDialogBox (dort als Button_clicked) weitergeleitet. Der OK-Button scheint immer den Focus(blau umrandet) zu haben, kann ja aber allerdings nicht der Focus des ganzen Dialogs sein.

    So jetzt endlich zu meinem Problem:
    Ich möchte nicht, daß das keyEvent(return) bis zur QDialogButtonBox weitergeleitet wird.
    Ist dies bei einem Dialog normal oder doch irgendwo bei mir im Quelltext kodiert(ich habe nichts gefunden!)
    Muss ich mir mein eigenes QLineEdit schreiben, in dem ich dieses keyEvent(return) abfange?

    gruß oldman



  • Vielleicht kannst du den Aufbau mal skizzieren oder nen Screenshot hochladen.
    Wenn ich den Sachverhalt richtig verstanden habe sollte das eigentlich nicht passieren.
    Das beschriebene Verhalten könnte durch ein connect ausgelöst werden, diese können nicht nur im Programmcode stehen sondern auch über den Desinger definiert werden.



  • Das ist das normale Verhalten von Dialogen. Ein Return wird an den OK-Button weitergeleitet - ein Escape an den Cancel-Button.



  • Die Lösung: eventFilter().
    Dein Dialog ist sicher eine von QDialog abgeleitete Klasse. Implementiere da die Funktion "eventFilter()". Doku sagt alles dazu.
    Den eventFilter installierst du dann auf dem QLineEdit, welches auf return was anderes machen soll. Abfragen solltest du "QEvent::KeyPress".



  • Danke erstmal an alle.

    @l'abra d'or
    Werde ich mal versuchen so zu machen.

    oldman


Anmelden zum Antworten