Seite 1 von 1

[geloest] QSpinBox Eingabe mit Enter bestaetigen geht nicht

Verfasst: 26. Juli 2007 23:18
von Fabeltier
Hallo,
Ich habe ein QSpinBox und moechte nun einen eingetippten Wert etwa auch nach dem druecken von ENTER uebernehmen. Das habe ich bisher folgendermassen gemacht:

Code: Alles auswählen

connect(spinbox, SIGNAL(editingFinished()), this, SLOT(slotTimer()));
Nun scheint mir QSpinBox::editingFinished() jedoch nicht mehr ideal, da der Wert auch beim weiterspringen mit TAB uebernommen wird, das will ich eigentlich nicht.

Gibt es kein Signal, wie etwas "editingFinishedAndConfirmed() - ENTER, das also ENTER meint und nicht auch TAB?

Verfasst: 27. Juli 2007 01:00
von RD1978
Hallo,

dann mußt Du wohl keyPressEvent( QKeyEvent *event ) überschreiben und die Enter-Taste abfangen oder es über den eventFilter( QObject *watched, QEvent *event ) machen.

MfG RD1978

Re: QSpinBox Eingabe mit Enter bestaetigen geht nicht

Verfasst: 27. Juli 2007 11:53
von macman
Fabeltier hat geschrieben:Nun scheint mir QSpinBox::editingFinished() jedoch nicht mehr ideal, da der Wert auch beim weiterspringen mit TAB uebernommen wird, das will ich eigentlich nicht.
Was soll denn sonst passieren? Das der alte Wert wieder eingetragen wird? Wenn Du so ein Verhalten für die Spinbox erstellst, dann muss es für alle Objekte gelten, sonst ist es nicht konsequent und für den User äußerst irreführend.

Verfasst: 27. Juli 2007 12:35
von Fabeltier
Nja, also ich glaube nicht dass ich ein "exotisches Sonderverhalten" wuensche, wenn ich beim durchtabben einfach keine Bestaetigung geben will, oder bestaetigst Du Deine Eintraege per TAB??!!!

Ich will auch nicht, dass ein alter Wert wieder eingetragen wird, wenn ich weitertabbe, sondern einfach, dass zwischen "Wechsel auf das naechste Widget" und "Wechsel auf das naechste Widget und Wert bestaetigen" unterschieden wird.

Ich sehe dass editingFinished() "Wechsel auf das naechste Widget" bedeutet, somit fuehrt meine Verwendung zum falschen Ergebnis (=Bestaetigung beim weitertabben). Anscheinend gibt es keine separate Funktion, die eine Bestaetigung gesondert behandelt und jeden Zusatz dazu, werde ich wohl wie von RD1978 schon beschrieben, selber durch ueberschreiben der entsprechenden Funktion ergaenzen muessen. Wollte ja nur mal nachfragen, ob ich was uebersehen hatte. Danke fuer die Antworten.

Verfasst: 27. Juli 2007 13:07
von Christian81
Fabeltier hat geschrieben:Nja, also ich glaube nicht dass ich ein "exotisches Sonderverhalten" wuensche, wenn ich beim durchtabben einfach keine Bestaetigung geben will, oder bestaetigst Du Deine Eintraege per TAB??!!!
Was ist so schlimm daran? Ich mein - das Ergebnis (der Berechnung die Du ggf. ausführst) bleibt doch gleich. Und wenn Du die Berechnung nicht ausführen willst, merk Dir einfach den alten Wert und mache einen Vergleich...
Und ja, mit Tab bestätigen mache ich schon -> Tab in Spinbox, Cursor up -> Tab um aus Spinbox rauszukommen -> das Programm sollte hier schon meinen Wert übernehmen...

Verfasst: 27. Juli 2007 20:36
von Fabeltier
Ok, der Thread war schon nach dem ersten Beitrag fuer mich geloest!!!


Zur allg. Diskussion will ich jedoch einer anscheinend hochinteressierten Oeffentlichkeit meine geistigen Erguesse und Intentionen zum Thema "Howto Spinbox" und "Howto Myspinbox" nicht vorenthalten: :wink:

Es mag ja Geschmackssache sein, wie man seine "Formulare" ausfuellen will. Natuerlich macht's nix, wenn ich weitertabbe und der Wert in der SpinBox stehn bliebt, solange ich ihn noch aendern kann, nachdem ich, etwa weiter unten, die Checkbox auch noch angeklickt, die Radiobuttons noch einmal umgesetzt, und in die Textfelder was anderes eingegeben, etc... habe. Solange ich das alles noch abaendern kann, bevor ich auf den Button "OK" klicke und der "Prozess" startet, isses imo auch Ok. In meinem Fall will ich einen Timer starten und mit der Spinbox die Zeit auswaehlen. Quasi als Shortcut, soll der Timer loslaufen, wenn ich die Zeit per ENTER bestaetige. Es sollte halt aber auch moeglich sein, dass ich vorher nochmal zur anderen Einstellungen tabbe und dann per "Ok-Button" den Timer starte. Wo ist das verwerfliche daran? Wo die Riesenabweichung vom Standardverhalten? Ich denke es gibt mindestens eine million und siebzehn Webseiten, die dieses Prinzip anwenden.