Seite 1 von 1

[geloest] setInputMask() fuer QLineEdit verhaelt sich komisc

Verfasst: 26. Oktober 2006 02:01
von joebar
Hallo,

ich habe folgenden Code

Code: Alles auswählen


lineEditUsername -> setInputMask("NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN");

verwendet. Die ganzen "N"s habe ich verwendet um (ziemlich) sicher zu sein, dass der Anwender genuegend Platz hat.

1. Problem
Ich kann nun mitten in die QlineEdit Box klicken und dort tippen. Es sieht so aus als ob ich Leerzeichen vorne habe (habe ich aber nicht). Ist also ein "kosmetisches" Problem, mir aber wichtig.

2. Problem


Wenn ich nun noch

Code: Alles auswählen

lineEditUsername -> setEchoMode(QLineEdit::Password);
zusaetzlich setze sehe ich immer soviele "*" wie "N", kann ich das unterbinden?

3. Problem
Die delete Taste funktioniert nicht. Markierten Text kann man mit delete loeschen, den Buchstaben rechts neben dem Cursor nicht. Backspace funktioniert.

DAnke,
J.

Verfasst: 27. Oktober 2006 06:58
von Christian81
Das Verhalten ist korrekt - zumindest so wie ich das sehe und aus der Beschreibung lese. Was Du eher suchst ist wohl maxLength()

Verfasst: 27. Oktober 2006 08:13
von joebar
Bei Problem 1 und 2 lass ich mich ja noch vielleicht ueberzeugen, dass man das in bestimmten Faellen gut findet. Problem 3 kann ich mir aber bisher keine Situation vorstellen wo das Sinn macht.

maxLength() suche ich nicht, da mir die Laenge egal ist. Die Laenge in der Maske habe ich nur gewaehlt damit ich die Maske verwenden kann, lieber waere mir keine Laengenbegrenzung.

Ich will erreichen, dass der Input in dem Feld (wie lang es auch immer sein mag) nur aus [a-z], [A-Z} und [0-9] besteht. Ich kann das natuerlich beim druecken des Save Buttons manuell testen und eine Fehlermeldung bringen aber so was Qt automatisches waere mir lieber.

Habe mir mal QValidator angeschaut und so wie ich das verstehe muss man den auch selber programmieren als abgeleitete Klasse. Wobei mir sich der Sinn verschliesst eine Funktion anzubieten die ich eh selber programmieren muss.

Verfasst: 27. Oktober 2006 08:25
von Christian81
Die Input-Mask verhält sich genauso wie z.B. eine Seriennummereingabe oder Datumseingabe. Das mit der Del-Taste ist das einzigste was man bemängeln kann, wobei ich nicht weiss ob dies bei der Seriennummereingabe möglich ist...

Ein QValidator ist doch nun wirklich nicht so schwer für dein Problem, oder? Einfach ein simples QRegExp und fertig.

Verfasst: 27. Oktober 2006 19:54
von joebar
Ah ich hatte in der Doku irgendwie immer nur die validate() Funktion gesehen, habe erst jetzt gemerkt dass ich den Validator dem QLineEdit zuweisen kann.

Danke fuer den Hinweis,
J.