Seite 1 von 1

Return schließt immer den Dialog :-(

Verfasst: 12. Januar 2006 17:07
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

Verfasst: 12. Januar 2006 17:46
von MichaelS
Ich vermute, dass der OK-Button als Default-Button definiert ist und daher immer "den Vorzug" bekommt.

Gruß Michael

Verfasst: 13. Januar 2006 09:18
von Flachkoepper
Okay, und wie stelle ich das ab?

Verfasst: 13. Januar 2006 10:04
von MichaelS
In dem die Eigenschaft "default" des OK-Buttons entweder mit dem Designer oder der Methode setDefault(bool) auf false gesetzt wird.

Verfasst: 13. Januar 2006 10:20
von Flachkoepper
Das hat irgendwie nichts geändert. Weitere Ideen?

Viele Grüße,
Flachköpper

Verfasst: 17. Januar 2006 23:27
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

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

Verfasst: 18. Januar 2006 05:16
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.

Verfasst: 25. Januar 2006 15:01
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

Verfasst: 29. Januar 2006 04:55
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