Auf dieser Seite

QValidator Class

Die Klasse „QValidator“ dient zur Validierung von Eingabetext. Mehr...

Header: #include <QValidator>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Erbt von: QObject
Vererbt an:

QDoubleValidator, „ QIntValidator “ sowie QRegularExpressionValidator

Öffentliche Typen

enum State { Invalid, Intermediate, Acceptable }

Öffentliche Funktionen

QValidator(QObject *parent = nullptr)
virtual ~QValidator()
virtual void fixup(QString &input) const
QLocale locale() const
void setLocale(const QLocale &locale)
virtual QValidator::State validate(QString &input, int &pos) const = 0

Signale

void changed()

Ausführliche Beschreibung

Die Klasse selbst ist abstrakt. Zwei Unterklassen, ` QIntValidator ` und ` QDoubleValidator`, bieten eine grundlegende Überprüfung des Zahlenbereichs, und ` QRegularExpressionValidator ` ermöglicht eine allgemeine Überprüfung mithilfe eines benutzerdefinierten regulären Ausdrucks.

Sollten die integrierten Validatoren nicht ausreichen, können Sie eine Unterklasse von `QValidator` erstellen. Die Klasse verfügt über zwei virtuelle Funktionen: ` validate()` und ` fixup()`.

validate() muss von jeder Unterklasse implementiert werden. Sie gibt je nachdem, ob ihr Argument gültig ist (gemäß der Definition der Unterklasse für „gültig“), Invalid, Intermediate oder Acceptable zurück.

Diese drei Zustände bedürfen einer Erläuterung. Eine Zeichenkette vom Typ „ Invalid “ ist eindeutig ungültig. „ Intermediate “ ist weniger offensichtlich: Das Konzept der Gültigkeit lässt sich nur schwer anwenden, wenn die Zeichenkette unvollständig ist (also noch bearbeitet wird). QValidator definiert „ Intermediate “ als die Eigenschaft einer Zeichenkette, die weder eindeutig ungültig ist noch als Endergebnis akzeptabel ist. „ Acceptable “ bedeutet, dass die Zeichenkette als Endergebnis akzeptabel ist. Man könnte sagen, dass jede Zeichenkette, die während der Eingabe einer „ Acceptable “-Zeichenkette einen plausiblen Zwischenzustand darstellt, „ Intermediate “ ist.

Hier sind einige Beispiele:

  • Bei einem Eingabefeld, das ganze Zahlen von 10 bis einschließlich 1000 akzeptiert, sind 42 und 123 „ Acceptable “, die leere Zeichenkette, 5 oder 1234 sind „ Intermediate “, und „asdf“ sowie 10114 sind „ Invalid “.
  • Bei einer bearbeitbaren Combobox, die URLs akzeptiert, ist jede wohlgeformte URL Acceptable, „http://example.com/“ ist Intermediate (möglicherweise wurde bei einer Kopier- und Einfügeaktion versehentlich ein Komma am Ende übernommen), die leere Zeichenfolge lautet Intermediate (der Benutzer hat möglicherweise den gesamten Text markiert und gelöscht, um eine neue URL einzugeben) und „http:///./“ lautet Invalid.
  • Bei einem Drehfeld, das Längenangaben akzeptiert, sind „11 cm“ und „1 in“ Acceptable, „11“ und die leere Zeichenfolge sind Intermediate, und „http://example.com“ sowie „hour“ sind Invalid.

fixup() steht für Validatoren zur Verfügung, die bestimmte Benutzerfehler beheben können. Die Standardimplementierung führt keine Aktion aus. QLineEdit ruft beispielsweise fixup() auf, wenn der Benutzer die Eingabetaste (oder Return) drückt und der Inhalt derzeit nicht gültig ist. Dies gibt der Funktion fixup() die Möglichkeit, mit etwas „Zauberei“ eine Zeichenkette vom Typ Invalid in Acceptable umzuwandeln.

Ein Validator verfügt über eine Locale, die mit ` setLocale()` festgelegt wird. Diese wird in der Regel zum Parsen lokalisierter Daten verwendet. Beispielsweise nutzen ` QIntValidator ` und ` QDoubleValidator ` sie, um lokalisierte Darstellungen von Ganzzahlen und Gleitkommazahlen zu parsen.

QValidator wird in der Regel zusammen mit QLineEdit, QSpinBox und QComboBox verwendet.

Siehe auch QIntValidator, QDoubleValidator, QRegularExpressionValidator und das Beispiel „Line Edits“.

Dokumentation zu Mitgliedstypen

enum QValidator::State

Dieser Enum-Typ definiert die Zustände, in denen sich eine validierte Zeichenkette befinden kann.

KonstanteWertBeschreibung
QValidator::Invalid0Die Zeichenkette ist eindeutig ungültig.
QValidator::Intermediate1Die Zeichenfolge ist ein plausibler Zwischenwert.
QValidator::Acceptable2Die Zeichenkette ist als Endergebnis akzeptabel, d. h., sie ist gültig.

Dokumentation der Member-Funktionen

[explicit] QValidator::QValidator(QObject *parent = nullptr)

Richtet den Validator ein. Der Parameter „ parent “ wird an den Konstruktor von „ QObject “ übergeben.

[virtual noexcept] QValidator::~QValidator()

Löscht den Validator und gibt dabei den belegten Speicherplatz sowie alle anderen genutzten Ressourcen frei.

[signal] void QValidator::changed()

Dieses Signal wird ausgelöst, wenn sich eine Eigenschaft geändert hat, die die Gültigkeit einer Zeichenkette beeinflussen könnte.

[virtual] void QValidator::fixup(QString &input) const

Diese Funktion versucht, input so zu ändern, dass es gemäß den Regeln dieses Validators gültig ist. Dies muss nicht zwangsläufig zu einer gültigen Zeichenkette führen: Aufrufer dieser Funktion müssen anschließend eine erneute Prüfung durchführen; die Standardausführung führt keine Aktion aus.

Neuimplementierungen dieser Funktion können ` input ` ändern, auch wenn sie keine gültige Zeichenkette erzeugen. Beispielsweise könnte ein ISBN-Validator alle Zeichen außer Ziffern und „-“ löschen wollen, auch wenn das Ergebnis immer noch keine gültige ISBN ist; ein Nachnamensvalidator könnte Leerzeichen am Anfang und am Ende der Zeichenkette entfernen wollen, auch wenn die resultierende Zeichenkette nicht in der Liste der akzeptierten Nachnamen enthalten ist.

QLocale QValidator::locale() const

Gibt die Locale für den Validator zurück. Die Locale wird standardmäßig auf denselben Wert wie bei QLocale() initialisiert.

Siehe auch „ setLocale()“ und „ QLocale::QLocale()“.

void QValidator::setLocale(const QLocale &locale)

Legt die „ locale “ fest, die für den Validator verwendet wird. Sofern „setLocale“ nicht aufgerufen wurde, verwendet der Validator die mit „ QLocale::setDefault()“ festgelegte Standard-Locale. Wenn keine Standard-Locale festgelegt wurde, wird die Locale des Betriebssystems verwendet.

Siehe auch „ locale()“ und „ QLocale::setDefault()“.

[pure virtual] QValidator::State QValidator::validate(QString &input, int &pos) const

Diese virtuelle Funktion gibt „ Invalid “ zurück, wenn „ input “ gemäß den Regeln dieses Validators ungültig ist, „ Intermediate “, wenn die Eingabe nach einer geringfügigen Korrektur wahrscheinlich gültig wird (z. B. wenn der Benutzer „4“ in ein Widget eingibt, das ganze Zahlen zwischen 10 und 99 akzeptiert), und „ Acceptable “, wenn die Eingabe gültig ist.

Die Funktion kann bei Bedarf sowohl input als auch pos (die Cursorposition) ändern.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.