Alles rund um die Programmierung mit Qt
Marco812
Beiträge: 139 Registriert: 22. November 2005 11:28
Beitrag
von Marco812 » 27. Mai 2006 21:52
Hallo,
ich möchte die Eingabe in ein QLineEdit pürfen und ggf. erlauben oder nicht.
Code: Alles auswählen
connect (myLineEdit, SIGNAL(textEdited(const QString&)) , this, SLOT (checkValue(const QString&)) );
checkValue(const QString& value){
//Prüfung durchführen
//...
//Eingabe erlauben oder nicht
if (value == OK)
return Acceptable;
else
return Invalid;
}
Welches signal oder solt kann ich dafür verwenden? Welche Möglichkeit habe ich dies zu realisieren?
Einen Validator kann ich für das LineEdit nicht verwenden, da es nicht nur vom Eingabewert abhängig ist.
Gruß
Marco812
Christian81
Beiträge: 7319 Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:
Beitrag
von Christian81 » 27. Mai 2006 22:08
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
Marco812
Beiträge: 139 Registriert: 22. November 2005 11:28
Beitrag
von Marco812 » 28. Mai 2006 04:45
Hallo,
ja habe ich, aber textChanged ist doch das gleiche wie textEdited. Nur wird mit setText() textEdited nicht aufgerufen und textChanged doch.
Allerdings sehe ich bei beiden keine Möglichkeit wie ich die Eingabe prüfen und anschließend erlauben kann oder nicht.
Wärst du so nett und sagst mir wie?
Gruß
Marco812
Christian81
Beiträge: 7319 Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:
Beitrag
von Christian81 » 28. Mai 2006 08:40
Fang textEdited ab, überprüfe den übergebenen String und wenn er Dir nicht passt setze den vorherigen String mit setText() wieder ein. Evtl. musst Du den vorherigen text irgendwo zwischenspeicher, evtl. ist er noch gar nicht aktualisiert wenn textEdited ankommt - weiss ich nicht.
Ausserdem kann man doch einen QValidator setzen (Qt4) - also einfach von QValidator ableiten, die beiden Funktionen implementieren und diesen in QLineEdit setzen.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
Marco812
Beiträge: 139 Registriert: 22. November 2005 11:28
Beitrag
von Marco812 » 28. Mai 2006 13:13
Fang textEdited ab, überprüfe den übergebenen String und wenn er Dir nicht passt setze den vorherigen String mit setText() wieder ein.
Genau das ist ja das Problem, der übergebenen String ist ja schon der neue wert, aber wie bekomme ich den alten?
Christian81
Beiträge: 7319 Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:
Beitrag
von Christian81 » 28. Mai 2006 13:44
Marco812 hat geschrieben: Fang textEdited ab, überprüfe den übergebenen String und wenn er Dir nicht passt setze den vorherigen String mit setText() wieder ein.
Genau das ist ja das Problem, der übergebenen String ist ja schon der neue wert, aber wie bekomme ich den alten?
Nunja - wenn du Glück hast ist der alte noch über QLineEdit::text() abrufbar. Ansonsten einfach den alten merken. Soltle dochnicht das Problem sein.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
Marco812
Beiträge: 139 Registriert: 22. November 2005 11:28
Beitrag
von Marco812 » 29. Mai 2006 18:57
Hallo,
vielen Dank für deine Hilfe, habe es hinbekommen.
Gruß
Marco812