QValidator Class
La clase QValidator proporciona validación de texto de entrada. Más...
| Cabecera: | #include <QValidator> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui)target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| Hereda: | QObject |
| Heredado por: | QDoubleValidator, QIntValidator, y QRegularExpressionValidator |
Tipos Públicos
| enum | State { Invalid, Intermediate, Acceptable } |
Funciones públicas
| 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 |
Señales
| void | changed() |
Descripción detallada
La clase en sí es abstracta. Dos subclases, QIntValidator y QDoubleValidator, proporcionan una comprobación básica de rangos numéricos, y QRegularExpressionValidator proporciona una comprobación general utilizando una expresión regular personalizada.
Si los validadores incorporados no son suficientes, puedes subclasificar QValidator. La clase tiene dos funciones virtuales: validate() y fixup().
validate() debe ser implementada por cada subclase. Devuelve Invalid, Intermediate o Acceptable dependiendo de si su argumento es válido (para la definición de válido de la subclase).
Estos tres estados requieren alguna explicación. Una cadena Invalid es claramente inválida. Intermediate es menos obvio: el concepto de validez es difícil de aplicar cuando la cadena está incompleta (todavía se está editando). QValidator define Intermediate como la propiedad de una cadena que no es claramente inválida ni aceptable como resultado final. Acceptable significa que la cadena es aceptable como resultado final. Se podría decir que cualquier cadena que sea un estado intermedio plausible durante la entrada de una cadena Acceptable es Intermediate.
He aquí algunos ejemplos:
- Para una línea de edición que acepta números enteros del 10 al 1000 inclusive, 42 y 123 son Acceptable, la cadena vacía, 5, o 1234 son Intermediate, y "asdf" y 10114 es Invalid.
- Para un cuadro combinado editable que acepte URLs, cualquier URL bien formada es Acceptable, "http://example.com/," es Intermediate (podría ser una acción de cortar y pegar que accidentalmente llevó una coma al final), la cadena vacía es Intermediate (el usuario podría seleccionar y borrar todo el texto en preparación para introducir una nueva URL) y "http:///./" es Invalid.
- Para un cuadro de giro que acepte longitudes, "11cm" y "1in" son Acceptable, "11" y la cadena vacía son Intermediate, y "http://example.com" y "hour" son Invalid.
fixup() se proporciona para los validadores que pueden reparar algunos errores del usuario. La implementación por defecto no hace nada. QLineEdit Por ejemplo, fixup() si el usuario pulsa Intro (o Retorno) y el contenido no es válido en ese momento. Esto permite a la función fixup() la oportunidad de realizar algo de magia para hacer una cadena Invalid Acceptable .
Un validador tiene una configuración regional, establecida con setLocale(). Normalmente se utiliza para analizar datos localizados. Por ejemplo, QIntValidator y QDoubleValidator lo utilizan para analizar representaciones localizadas de enteros y dobles.
QValidator se utiliza normalmente con QLineEdit, QSpinBox y QComboBox.
Véase también QIntValidator, QDoubleValidator, QRegularExpressionValidator, y Ejemplo de edición de líneas.
Documentación de tipos de miembros
enum QValidator::State
Este tipo enum define los estados en los que puede existir una cadena validada.
| Constante | Valor | Descripción |
|---|---|---|
QValidator::Invalid | 0 | La cadena es claramente inválida. |
QValidator::Intermediate | 1 | La cadena es un valor intermedio plausible. |
QValidator::Acceptable | 2 | La cadena es aceptable como resultado final; es decir, es válida. |
Documentación de las funciones miembro
[explicit] QValidator::QValidator(QObject *parent = nullptr)
Configura el validador. El parámetro parent se pasa al constructor QObject.
[virtual noexcept] QValidator::~QValidator()
Destruye el validador, liberando cualquier almacenamiento y otros recursos utilizados.
[signal] void QValidator::changed()
Esta señal se emite cuando ha cambiado alguna propiedad que pueda afectar a la validez de una cadena.
[virtual] void QValidator::fixup(QString &input) const
Esta función intenta cambiar input para que sea válida según las reglas de este validador. No es necesario que resulte en una cadena válida: quienes llamen a esta función deben volver a probarla después; el valor por defecto no hace nada.
Las reimplementaciones de esta función pueden cambiar input aunque no produzcan una cadena válida. Por ejemplo, un validador de ISBN puede querer eliminar todos los caracteres excepto los dígitos y "-", incluso si el resultado sigue sin ser un ISBN válido; un validador de apellidos puede querer eliminar los espacios en blanco al principio y al final de la cadena, incluso si la cadena resultante no está en la lista de apellidos aceptados.
QLocale QValidator::locale() const
Devuelve la configuración regional del validador. Por defecto, la configuración regional se inicializa igual que QLocale().
Véase también setLocale() y QLocale::QLocale().
void QValidator::setLocale(const QLocale &locale)
Establece el locale que se utilizará para el validador. A menos que se haya llamado a setLocale, el validador utilizará la configuración regional por defecto establecida con QLocale::setDefault(). Si no se ha establecido una configuración regional por defecto, será la del sistema operativo.
Véase también locale() y QLocale::setDefault().
[pure virtual] QValidator::State QValidator::validate(QString &input, int &pos) const
Esta función virtual devuelve Invalid si input no es válido según las reglas de este validador, Intermediate si es probable que un poco más de edición haga que la entrada sea aceptable (por ejemplo, el usuario teclea "4" en un widget que acepta enteros entre 10 y 99), y Acceptable si la entrada es válida.
La función puede cambiar tanto input como pos (la posición del cursor) si es necesario.
© 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.