Return schließt immer den Dialog :-(

Alles rund um die Programmierung mit Qt
Antworten
Flachkoepper
Beiträge: 149
Registriert: 11. Januar 2005 12:14
Wohnort: Hannover

Return schließt immer den Dialog :-(

Beitrag von Flachkoepper »

Mahlzeit,

ich habe eine Klasse von QDialog abgeleitet, 2 Knöpfe OK und Cancel mit den entsprechenden slots accept und reject hinzugefügt, und in diesem Dialog nun ne Menge Widgets, u.a. auch ein QLineEdit. Wenn ich jetzt in diesem QLineEdit irgendwas eingebe und die Eingabe mit Return abschließen will, wird immer der accept-slot ausgeführt und der Dialog wird geschlossen. Weiß irgendwer Rat?

Viele Grüße,
Flachkoepper
MichaelS
Beiträge: 240
Registriert: 27. Dezember 2005 12:49

Beitrag von MichaelS »

Ich vermute, dass der OK-Button als Default-Button definiert ist und daher immer "den Vorzug" bekommt.

Gruß Michael
Flachkoepper
Beiträge: 149
Registriert: 11. Januar 2005 12:14
Wohnort: Hannover

Beitrag von Flachkoepper »

Okay, und wie stelle ich das ab?
MichaelS
Beiträge: 240
Registriert: 27. Dezember 2005 12:49

Beitrag von MichaelS »

In dem die Eigenschaft "default" des OK-Buttons entweder mit dem Designer oder der Methode setDefault(bool) auf false gesetzt wird.
Flachkoepper
Beiträge: 149
Registriert: 11. Januar 2005 12:14
Wohnort: Hannover

Beitrag von Flachkoepper »

Das hat irgendwie nichts geändert. Weitere Ideen?

Viele Grüße,
Flachköpper
ArneStocker
Beiträge: 300
Registriert: 3. November 2004 16:15
Wohnort: Berlin

Beitrag von ArneStocker »

Hi

... versuch doch mal, die eventschleife des Dialogs abzuleiten und des KeyEvent nach dem status key_return (oder ähnlich) filtern. In einer verfeinerten Version könntest Du noch prüfen, welches Widget gerade den focus hat (z.B. der Default-Button)

Gruss Arne
seneca
Beiträge: 23
Registriert: 6. Januar 2006 09:57

Re: Return schließt immer den Dialog :-(

Beitrag von seneca »

Flachkoepper hat geschrieben: Wenn ich jetzt in diesem QLineEdit irgendwas eingebe und die Eingabe mit Return abschließen will, wird immer der accept-slot ausgeführt und der Dialog wird geschlossen. Weiß irgendwer Rat?
Ich verstehe nicht was daran denn eigentlich falsch sein soll. Oder ist es so dass der Dialog *NICHT* mit accept geschlossen wird wenn der Focus auf einem anderen Eingabeelement ist? Normal ist doch, dass man mit der Tabulator Taste zum nächsten Element weiterschaltet, auch bei einem QLineEdit.
Flachkoepper
Beiträge: 149
Registriert: 11. Januar 2005 12:14
Wohnort: Hannover

Beitrag von Flachkoepper »

Ich verstehe nicht was daran denn eigentlich falsch sein soll. Oder ist es so dass der Dialog *NICHT* mit accept geschlossen wird wenn der Focus auf einem anderen Eingabeelement ist? Normal ist doch, dass man mit der Tabulator Taste zum nächsten Element weiterschaltet, auch bei einem QLineEdit.
Je mehr ich drüber nachdenke und je mehr kommerzielle Anwendungen ich mir angucke, muss ich zugeben, dass du recht hast. Ein Return schließt in den meisten Anwendungen den Dialog, auch wenn der Cursor gerade in einem LineEdit steht. Hmmm, ok. Dann behalte ich das eben auch so bei.

@Arne: Ich muss leider zugeben, dass ich kein Wort von dem verstehe, was du damit meinst. Kannst du das bitte näher erläutern (nur für den Fall, das ich das später mal gebrauchen könnte.)

Viele Grüße,
Flachkoepper
ArneStocker
Beiträge: 300
Registriert: 3. November 2004 16:15
Wohnort: Berlin

Beitrag von ArneStocker »

tschuldige die verspätetete antwort:

ich meinte, dass Du das QKeyEvent (in diesem Fall den Tastendruck return) aus der Eventschleife des OK Buttons (oder ggf. des Dialogs, bitte prüfen) herausfiltern kannst. Dazu kannst Du entweder die event Methode ableiten oder einen eventFilter auf das Objekt legen. In beiden Fällen ist es möglich die weitere Bearbeitung zu stoppen und (sofern gewünscht) eigene Aktionen auszuführen (und ggf. andere events zu posten).

Ich persönlich schreibe, der besseren Wiederverwendbarkeit wegen, lieber ControlKlassen, die einen eventFilter auf eines (oder mehrere) Objekte legen

Gruss Arne
Antworten