Seite 1 von 1

QRegExValidator und linedit

Verfasst: 10. Oktober 2013 12:27
von serious_sammy
Hallo, wenn ich folgendes ausführe, kann ich leider garnichts mehr in das lineedit-feld schreiben :(
Woran liegts? Es sollen nur Namen wie zum Beispiel "Max Mustermann" eingegeben werden können, also zwei Wörte mit " " getrennt.

Code: Alles auswählen

QString name_rx = "[A-z]+\\S[A-z]+";
     QRegExp rx;
     QValidator *validator = new QRegExpValidator(rx, this);

     rx.setPattern(name_rx);
     ui->nameEdit->setValidator(validator);
     ui->nameEdit->setMaxLength(32);

Re: QRegExValidator und linedit

Verfasst: 14. Oktober 2013 08:11
von Mr.Crank
Tach ,

ich denke dein Fehler liegt in deiner Expression, kannst dir aus Spaß ja sonst mal nach deinem setPattern
im cout ausgeben lassen, welche Pattern gesetzt wurden. pattern() sollte dir nen String zurück geben ;) probieren
macht Klug.

Ansonsten fällt mir hallt die Notation der Expression auf,
probier mal

Code: Alles auswählen

QString name_rx ="[A-z]+\s[A-z]+";
Gruß Mr.Crank

Re: QRegExValidator und linedit

Verfasst: 14. Oktober 2013 10:54
von serious_sammy
Moin,

ja der Fehler lag an der Expression, musste \\s sein und nich \\S. Ein \ reicht leider nicht :-(
Der eingentlich warum ich garnichts eingeben konnte war die Reihenfolge.

Code: Alles auswählen

     QString name_rx = "[A-z]+\\S[A-z]+";
     QRegExp rx;
     rx.setPattern(name_rx); // richtig
     QValidator *validator = new QRegExpValidator(rx, this);

     //rx.setPattern(name_rx); // falsch
     ui->nameEdit->setValidator(validator);
     ui->nameEdit->setMaxLength(32);
setPattern muss ausgeführt werden bevor der der Validator initialisiert wird.

Bis neulich, Sammy