editingFinished()
-
Benutze EditingFinished() um mit der Maus auf ein Eingabefeld ein Dialog zu ändern, versuche gerade einen Parameter mit zu übergeben, nach dem anhängen des Parameter verliere ist den Focus.
Ist es nicht möglich eine Parameter mit zu übergeben?void KundeEinzel::on_lineEditVorname_editingFinished(int line_size_1) { bool beendet = false; QString vorname =("Vorname"); QString zahl1 = ui->lineEditVorname->text(); //int line_size = zahl1.length(); if(zahl1.isEmpty()){ beendet = true; }else{ beendet = false; } check(vorname,beendet); }
-
Ich nehme an, Du sprichst von einem QLineEdit Objekt.
Das SignaleditingFinished()
übergibt keine Parameter.
Du kannst statt dessentextEdited(const QString &)
verwenden. Da bekommst Du den ganzen Text übergeben und kannst Dir mitsize()
dessen Größe auslesen.Ich verstehe Deinen Code und Deine Frage dennoch nicht ganz: Du liest den editierten QString ohnehin in die Varable zahl1. Deren Länge erhältst Du mit
size()
oder wie in Deinem Kommentar mitlength()
(die beiden Methoden sind ident). Wozu brauchst Du vom Signal dann überhaupt einen Parameter, dessen Wert Du auch so ermitteln kannst? -
Alternativ geht auch eine Lambda-Connection wo du dann den Code direkt in die Connection schreibst und den
line_size_1
Wert direkt berechnen und nutzen kannst, ohne ihn über das Signal an einen Slot senden zu müssen, der den Parameter eh nicht akzeptiert bzw. verarbeiten kann.connect(lineEdit, &QLineEdit::editingFinished, this, [=] (/* opt. Varis*/) { // Hier den Wert berechnen // und danach alles weitere tun, was in dem Slot steht. });
-
Habe mir einen Datensatz angelegt, und hole mir über den mapper die Daten aus dem Datensatz.
Jetzt liegt im Eingabefeld lineEditVorname der Vorname aus dem Datensatz. Über die QString variable zahl1 möchte ich die Eingabe (ändern oder löschen), dann zurück speichern über den mapper in den Datensatz.
Ich bekomme es aber nur mit wenn das Eingabefeld leer ist nicht wenn es geändert wird oder schon geändert ist Jetzt wollte ich beide QStrings vergleichen aus den mapper und aus meine Eingabe. -
@M-W43 said in editingFinished():
Über die QString variable zahl1 möchte ich die Eingabe (ändern oder löschen), dann zurück speichern über den mapper in den Datensatz.
Dass man eine String-Variable
zahl1
nennt, sorgt allein schon für Verwirrung... :)@M-W43 said in editingFinished():
Ich bekomme es aber nur mit wenn das Eingabefeld leer ist nicht wenn es geändert wird oder schon geändert ist Jetzt wollte ich beide QStrings vergleichen aus den mapper und aus meine Eingabe.
Man könnte das Signal (
textChanged
) nutzen nachdem der Text aus der Datenbank eingetragen wurde um zu prüfen ob was ändert wurde.
Jede weitere Änderung (egal ob im Code oder über die GUI) löst das Signal aus (im Gegensatz zutextEdited()
was nur über die GUI funktioniert).
Dort könnte man dann sowas wie ein "dirty flag" setzen und dann weiß man dass der Text im LineEdit geändert wurde und neu in die Datenbank zurückgeschrieben werden muss.Gibt aber bestimmt noch mehr Möglichkeiten.