En esta página

QIntValidator Class

La clase QIntValidator proporciona un validador que asegura que una cadena contiene un entero válido dentro de un rango especificado. Más...

Cabecera: #include <QIntValidator>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Hereda: QValidator

Propiedades

Funciones públicas

QIntValidator(QObject *parent = nullptr)
QIntValidator(int minimum, int maximum, QObject *parent = nullptr)
virtual ~QIntValidator()
int bottom() const
void setBottom(int)
void setRange(int bottom, int top)
void setTop(int)
int top() const

Funciones públicas reimplementadas

virtual void fixup(QString &input) const override
virtual QValidator::State validate(QString &input, int &pos) const override

Señales

void bottomChanged(int bottom)
void topChanged(int top)

Descripción detallada

Ejemplos de uso:

QValidator *validator = new QIntValidator(100, 999, this);
QLineEdit *edit = new QLineEdit(this);

// the edit lineedit will only accept integers between 100 and 999
edit->setValidator(validator);

A continuación presentamos algunos ejemplos de validadores. En la práctica estarían normalmente asociados a un widget como en el ejemplo anterior.

QString str;
int pos = 0;
QIntValidator v(100, 900, this);

str = "1";
v.validate(str, pos);     // returns Intermediate
str = "012";
v.validate(str, pos);     // returns Intermediate

str = "123";
v.validate(str, pos);     // returns Acceptable
str = "678";
v.validate(str, pos);     // returns Acceptable

str = "999";
v.validate(str, pos);    // returns Intermediate

str = "1234";
v.validate(str, pos);     // returns Invalid
str = "-123";
v.validate(str, pos);     // returns Invalid
str = "abc";
v.validate(str, pos);     // returns Invalid
str = "12cm";
v.validate(str, pos);     // returns Invalid

Observe que el valor 999 devuelve Intermedio. Los valores formados por un número de dígitos igual o inferior al valor máximo se consideran intermedios. Esto se debe a que el dígito que impide que un número esté dentro del rango no es necesariamente el último dígito tecleado. Esto también significa que un número intermedio puede tener ceros a la izquierda.

Los valores mínimo y máximo se establecen en una llamada con setRange(), o individualmente con setBottom() y setTop().

QIntValidator utiliza su locale() para interpretar el número. Por ejemplo, en locales árabes, QIntValidator aceptará dígitos árabes.

Nota: La configuración de QLocale::NumberOptions en locale() también afecta a la forma en que se interpreta el número. Por ejemplo, como QLocale::RejectGroupSeparator no está configurado por defecto, el validador aceptará separadores de grupo. Por lo tanto, se recomienda utilizar QLocale::toInt() para obtener el valor numérico.

Véase también QDoubleValidator, QRegularExpressionValidator, QLocale::toInt(), y Ejemplo de edición de líneas.

Documentación de propiedades

bottom : int

Esta propiedad contiene el valor más bajo aceptable del validador.

Por defecto, el valor de esta propiedad se deriva del número entero con signo más bajo disponible (-2147483648).

Funciones de acceso:

int bottom() const
void setBottom(int)

Señal del notificador:

void bottomChanged(int bottom)

Véase también setRange().

top : int

Esta propiedad contiene el valor más alto aceptable del validador.

Por defecto, el valor de esta propiedad se deriva del entero con signo más alto disponible (2147483647).

Funciones de acceso:

int top() const
void setTop(int)

Señal del notificador:

void topChanged(int top)

Véase también setRange().

Documentación de las funciones miembro

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

Construye un validador con un objeto parent que acepta todos los enteros.

QIntValidator::QIntValidator(int minimum, int maximum, QObject *parent = nullptr)

Construye un validador con un parent, que acepta enteros de minimum a maximum inclusive.

[virtual noexcept] QIntValidator::~QIntValidator()

Destruye el validador.

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

Reimplementa: QValidator::fixup(QString &input) const.

void QIntValidator::setRange(int bottom, int top)

Establece el rango del validador para que sólo acepte enteros entre bottom y top, ambos inclusive.

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

Reimplementa: QValidator::validate(QString &input, int &pos) const.

Devuelve Acceptable si input es un entero dentro del rango válido. Si input tiene como máximo tantos dígitos como el tope del rango, o es un prefijo de un entero en el rango válido, devuelve Intermediate. En caso contrario, devuelve Invalid.

Si el rango válido está formado sólo por enteros positivos (por ejemplo, de 32 a 100) y input es un entero negativo, se devuelve No válido. (Por otro lado, si el rango consiste en enteros negativos (por ejemplo, de -100 a -32) y input es un entero positivo sin signo más a la izquierda, entonces se devuelve Intermedio, porque el usuario podría estar a punto de teclear el signo menos (especialmente para lenguajes de derecha a izquierda).

Del mismo modo, si el rango válido está entre 46 y 53, entonces 41 y 59 se evaluarán como Intermediate, ya que de otro modo el usuario no podría cambiar un valor de 49 a 51.

int pos = 0;

s = "abc";
v.validate(s, pos);    // returns Invalid

s = "5";
v.validate(s, pos);    // returns Intermediate

s = "50";
v.validate(s, pos);    // returns Acceptable

Por defecto, este validador no utiliza el parámetro pos.

© 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.