JGU Logo JGU Logo JGU Logo JGU Logo

Institut für Informatik

Michael Wand
Christian Ali Mehmeti-Göpel
Wintersemester 2020/21DIGITAL

Blatt 09

Aufgabe 01
Einführung in die Softwareentwicklung



Aufgabe Validieren von Eingaben

Letzte Änderung: 19. January 2021, 09:50 Uhr
10 Punkteim Detail
Ansicht:   |  

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


  1. Erstellen Sie eine GUI, die ein Texteingabefeld anzeigt.
    Es reicht völlig aus, ein Textfeld auf einer sonst leeren Oberfläche zu platzieren.
  2. Wir wollen nun für das Textfeld einen 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 QValidators 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.
  3. Sollte der Benutzer einmal keine korrekte Eingabe gemacht haben, so soll sich die Hintergrundfarbe des Eingabefeldes in eine zufällige Farbe ändern. Bei korrekter Eingabe wird der Hintergrund wieder weiß.