QLineEdit connect slot

Alles rund um die Programmierung mit Qt
Antworten
Marco812
Beiträge: 139
Registriert: 22. November 2005 11:28

QLineEdit connect slot

Beitrag von Marco812 »

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 »

Evtl. mal in die docs geschaut und http://doc.trolltech.com/4.1/qlineedit.html#textChanged gefunden?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Marco812
Beiträge: 139
Registriert: 22. November 2005 11:28

Beitrag von Marco812 »

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 »

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 »

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 »

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 »

Hallo,

vielen Dank für deine Hilfe, habe es hinbekommen.

Gruß

Marco812
Antworten