QValidator Class
Die Klasse QValidator ermöglicht die Validierung von Eingabetext. Mehr...
Kopfzeile: | #include <QValidator> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
Vererbt: | QObject |
Vererbt von: | QDoubleValidator, QIntValidator, und 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() |
Detaillierte Beschreibung
Die Klasse selbst ist abstrakt. Zwei Unterklassen, QIntValidator und QDoubleValidator, bieten grundlegende Prüfungen für numerische Bereiche, und QRegularExpressionValidator bietet allgemeine Prüfungen unter Verwendung eines benutzerdefinierten regulären Ausdrucks.
Wenn die eingebauten Prüfer nicht ausreichen, können Sie QValidator als Unterklasse verwenden. Die Klasse hat zwei virtuelle Funktionen: validate() und fixup().
validate() muss von jeder Unterklasse implementiert werden. Sie gibt Invalid, Intermediate oder Acceptable zurück, je nachdem, ob ihr Argument gültig ist (für die Definition von gültig in der Unterklasse).
Diese drei Zustände bedürfen einiger Erklärung. Eine Zeichenkette Invalid ist eindeutig ungültig. Intermediate ist weniger offensichtlich: Das Konzept der Gültigkeit ist schwierig anzuwenden, wenn die Zeichenkette unvollständig ist (noch bearbeitet wird). QValidator definiert Intermediate als die Eigenschaft einer Zeichenfolge, die weder eindeutig ungültig noch als Endergebnis akzeptabel ist. Acceptable bedeutet, dass die Zeichenfolge als Endergebnis akzeptabel ist. Man könnte sagen, dass jede Zeichenkette, die einen plausiblen Zwischenzustand während der Eingabe einer Acceptable Zeichenkette darstellt, Intermediate ist.
Hier sind einige Beispiele:
- Für eine Eingabezeile, die ganze Zahlen von 10 bis einschließlich 1000 akzeptiert, sind 42 und 123 Acceptable, die leere Zeichenkette, 5 oder 1234 sind Intermediate, und "asdf" und 10114 ist Invalid.
- Bei einem bearbeitbaren Kombinationsfeld, das URLs akzeptiert, ist jede wohlgeformte URL Acceptable, "http://example.com/" ist Intermediate (es könnte sich um eine Ausschneide- und Einfügeaktion handeln, bei der versehentlich ein Komma am Ende eingefügt wurde), die leere Zeichenfolge ist Intermediate (der Benutzer könnte den gesamten Text auswählen und löschen, um eine neue URL einzugeben) und "http:///./" ist Invalid.
- Bei einem Drehfeld, das Längenangaben akzeptiert, sind "11cm" und "1in" Acceptable, "11" und die leere Zeichenkette sind Intermediate, und "http://example.com" und "hour" sind Invalid.
fixup() ist für Validatoren vorgesehen, die einige Benutzerfehler reparieren können. Die Standardimplementierung tut nichts. QLineEdit Die Funktion fixup() wird zum Beispiel aufgerufen, wenn der Benutzer die Eingabetaste (oder den Zeilenschalter) drückt und der Inhalt derzeit nicht gültig ist. Dies gibt der Funktion fixup() die Möglichkeit, eine Invalid Zeichenkette in Acceptable umzuwandeln.
Ein Validator hat ein Gebietsschema, das mit setLocale() festgelegt wird. Er wird normalerweise verwendet, um lokalisierte Daten zu parsen. Zum Beispiel verwenden QIntValidator und QDoubleValidator ihn, um lokalisierte Repräsentationen von Ganzzahlen und Doubles zu analysieren.
QValidator wird normalerweise mit QLineEdit, QSpinBox und QComboBox verwendet.
Siehe auch QIntValidator, QDoubleValidator, QRegularExpressionValidator, und Line Edits Example.
Dokumentation der Mitgliedstypen
enum QValidator::State
Dieser Enum-Typ definiert die Zustände, in denen eine validierte Zeichenfolge existieren kann.
Konstante | Wert | Beschreibung |
---|---|---|
QValidator::Invalid | 0 | Die Zeichenfolge ist eindeutig ungültig. |
QValidator::Intermediate | 1 | Die Zeichenfolge ist ein plausibler Zwischenwert. |
QValidator::Acceptable | 2 | Die Zeichenkette ist als Endergebnis akzeptabel, d.h. sie ist gültig. |
Dokumentation der Mitgliedsfunktionen
[explicit]
QValidator::QValidator(QObject *parent = nullptr)
Richtet den Validator ein. Der Parameter parent wird an den QObject Konstruktor weitergegeben.
[virtual noexcept]
QValidator::~QValidator()
Zerstört den Validator und gibt den Speicherplatz und andere verwendete Ressourcen frei.
[signal]
void QValidator::changed()
Dieses Signal wird ausgegeben, wenn sich eine Eigenschaft, die die Gültigkeit einer Zeichenkette beeinflussen kann, geändert hat.
[virtual]
void QValidator::fixup(QString &input) const
Diese Funktion versucht, input so zu ändern, dass es nach den Regeln dieses Validators gültig ist. Das Ergebnis muss nicht unbedingt eine gültige Zeichenkette sein: Wer diese Funktion aufruft, muss anschließend erneut testen; die Voreinstellung bewirkt nichts.
Neuimplementierungen dieser Funktion können input auch dann ändern, wenn sie keine gültige Zeichenkette erzeugen. Zum Beispiel könnte ein ISBN-Prüfer alle Zeichen außer Ziffern und "-" löschen wollen, auch wenn das Ergebnis immer noch keine gültige ISBN ist; ein Nachnamen-Prüfer könnte Leerzeichen am Anfang und Ende der Zeichenkette entfernen wollen, auch wenn die resultierende Zeichenkette nicht in der Liste der akzeptierten Nachnamen enthalten ist.
QLocale QValidator::locale() const
Gibt das Gebietsschema für den Validator zurück. Das Gebietsschema ist standardmäßig auf dasselbe wie QLocale() initialisiert.
Siehe auch setLocale() und QLocale::QLocale().
void QValidator::setLocale(const QLocale &locale)
Legt die locale fest, die für den Prüfer verwendet wird. Solange setLocale nicht aufgerufen wurde, verwendet der Prüfer das Standardgebietsschema, das mit QLocale::setDefault() festgelegt wurde. Wenn kein Standardgebietsschema festgelegt wurde, ist es das Gebietsschema des Betriebssystems.
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 nach den Regeln dieses Validators ungültig ist, Intermediate, wenn es wahrscheinlich ist, dass ein wenig mehr Bearbeitung die Eingabe akzeptabel macht (z.B. der Benutzer gibt "4" in ein Widget ein, 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.
© 2025 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.