DIGITAL
Wir beginnen damit, ein einfaches Texteingabefeld anzuzeigen und dessen Funktionsweise zu kontrollieren. Diese Aufgabe besteht darin durch einen QValidator
die Eingabe eines solchen Eingabefeldes auf Korrektheit zu überprüfen und dabei selbst zu definieren was eine korrekte Eingabe ist.
Einen speziellen QValidator
können wir wie folgt definieren:
class my_validator : public QValidator {
public:
my_validator(QObject *parent = nullptr);
virtual ~my_validator() override = default;
// wird von QLineEdit aufgerufen, wenn eine beliebige Taste gedrückt wird
// (darf den String und die Cursor-Position pos verändern)
virtual QValidator::State validate(QString &input, int &pos) const = 0
// wird von QLineEdit aufgerufen, wenn die Enter-Taste betätigt wird
// (darf den String verändern)
virtual void fixup(QString &input) const
};
QValidator::State
ist hierbei einer der Wert QValidator::Invalid
, QValidator::Intermediate
oder QValidator::Acceptable
. Siehe auch: QValidator States
QValidator
implementieren, um Vornamen zu überprüfen. In unserem Fall darf ein Vorname nur Groß- und Kleinbuchstaben enthalten, keine Leerzeichen oder Sonderzeichen, und muss immer mit einem Großbuchstaben beginnen. Überlegen Sie sich, wie Sie die drei Zustände des QValidator
s hier sinnvoll einsetzen. Wenn ein Nutzername beispielsweise keine Leerzeichen oder Sonderzeichen enthält, aber mit einem Kleinbuchstaben beginnt, soll QValidator::Intermediate
zurückgegeben werden, und die fixup
-Funktion kann dann genutzt werden können, um automatisch den ersten Buchstaben in einen Großbuchstaben umzuwandeln. Sie dürfen natürlich die Funktionen von Qts QString
und QChar
verwenden, falls Sie dort etwas finden, was bei dieser Aufgabe hilft.