QDoubleValidator Class
La clase QDoubleValidator proporciona comprobación de rango de números en coma flotante. Más...
| Cabecera: | #include <QDoubleValidator> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui)target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| Hereda: | QValidator |
Tipos públicos
| enum | Notation { StandardNotation, ScientificNotation } |
Propiedades
Funciones públicas
| QDoubleValidator(QObject *parent = nullptr) | |
| QDoubleValidator(double bottom, double top, int decimals, QObject *parent = nullptr) | |
| virtual | ~QDoubleValidator() |
| double | bottom() const |
| int | decimals() const |
| QDoubleValidator::Notation | notation() const |
| void | setBottom(double) |
| void | setDecimals(int) |
| void | setNotation(QDoubleValidator::Notation) |
| void | setRange(double minimum, double maximum, int decimals) |
| void | setRange(double minimum, double maximum) |
| void | setTop(double) |
| double | top() const |
Funciones públicas reimplementadas
(since 6.3) virtual void | fixup(QString &input) const override |
| virtual QValidator::State | validate(QString &input, int &pos) const override |
Señales
| void | bottomChanged(double bottom) |
| void | decimalsChanged(int decimals) |
| void | notationChanged(QDoubleValidator::Notation notation) |
| void | topChanged(double top) |
Descripción Detallada
QDoubleValidator proporciona un límite superior, un límite inferior, y un límite en el número de dígitos después del punto decimal.
Puede establecer el rango aceptable en una sola llamada con setRange(), o con setBottom() y setTop(). Establezca el número de decimales con setDecimals(). La función validate() devuelve el estado de validación.
QDoubleValidator utiliza su locale() para interpretar el número. Por ejemplo, en la configuración regional alemana, "1,234" se aceptará como el número fraccionario 1,234. En la configuración regional árabe, QDoubleValidator aceptará dígitos arábigos.
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 (excepto en la configuración regional "C" ), el validador aceptará separadores de grupo. Si la cadena pasa la validación, pásela a locale().toDouble() para obtener su valor numérico.
Véase también QIntValidator, QRegularExpressionValidator, QLocale::toDouble(), y Ejemplo de edición de líneas.
Documentación de tipos de miembros
enum QDoubleValidator::Notation
Este enum define las notaciones permitidas para introducir un doble.
| Constante | Valor | Descripción |
|---|---|---|
QDoubleValidator::StandardNotation | 0 | La cadena se escribe en el formato estándar, una parte de número entero seguida opcionalmente de un separador y una parte fraccionaria, por ejemplo "0.015". |
QDoubleValidator::ScientificNotation | 1 | La cadena se escribe en formato científico, que opcionalmente añade una parte de exponente al formato estándar, por ejemplo "1.5E-2". |
La parte de números enteros puede incluir, como es habitual, un signo. Esto, junto con los separadores para la parte fraccionaria, el exponente y cualquier agrupación de dígitos, depende de la configuración regional. QDoubleValidator no comprueba la colocación (que también dependería de la configuración regional) de cualquier separador de agrupación de dígitos que encuentre, pero rechazará la entrada que los contenga si QLocale::RejectGroupSeparator está configurado en locale().numberOptions().
Véase también QLocale::numberOptions(), QLocale::decimalPoint(), QLocale::exponential(), y QLocale::negativeSign().
Documentación de propiedades
bottom : double
Esta propiedad contiene el valor mínimo aceptable del validador.
Por defecto, esta propiedad contiene un valor de -infinito.
Funciones de acceso:
| double | bottom() const |
| void | setBottom(double) |
Señal del notificador:
| void | bottomChanged(double bottom) |
Véase también setRange().
decimals : int
Esta propiedad contiene el número máximo de dígitos del validador después del punto decimal.
Por defecto, esta propiedad contiene un valor de -1, lo que significa que se acepta cualquier número de dígitos.
Funciones de acceso:
| int | decimals() const |
| void | setDecimals(int) |
Señal del notificador:
| void | decimalsChanged(int decimals) |
Véase también setRange().
notation : Notation
Esta propiedad contiene la notación de cómo una cadena puede describir un número
Por defecto, esta propiedad se establece en ScientificNotation.
Funciones de acceso:
| QDoubleValidator::Notation | notation() const |
| void | setNotation(QDoubleValidator::Notation) |
Señal del notificador:
| void | notationChanged(QDoubleValidator::Notation notation) |
Véase también Notation.
top : double
Esta propiedad contiene el valor máximo aceptable del validador.
Por defecto, esta propiedad contiene un valor de infinito.
Funciones de acceso:
| double | top() const |
| void | setTop(double) |
Señal del notificador:
| void | topChanged(double top) |
Véase también setRange().
Documentación de las funciones miembro
[explicit] QDoubleValidator::QDoubleValidator(QObject *parent = nullptr)
Construye un objeto validador con un objeto parent que acepta cualquier double.
QDoubleValidator::QDoubleValidator(double bottom, double top, int decimals, QObject *parent = nullptr)
Construye un objeto validador con un objeto parent. Este validador aceptará dobles de bottom a top inclusive, con hasta decimals dígitos después del punto decimal.
[virtual noexcept] QDoubleValidator::~QDoubleValidator()
Destruye el validador.
[override virtual, since 6.3] void QDoubleValidator::fixup(QString &input) const
Reimplementa: QValidator::fixup(QString &input) const.
Intenta fijar la cadena input a una representación Acceptable de un doble.
El formato del número viene determinado por notation(), decimals(), locale() y el último numberOptions().
Para cumplir con notation(), cuando se utilice ScientificNotation, el valor fijo se representará en su forma normalizada, lo que significa que cualquier valor distinto de cero tendrá un dígito distinto de cero antes del punto decimal.
QString input = "0.98765e2"; QDoubleValidator val; val.setLocale(QLocale::C); val.setNotation(QDoubleValidator::ScientificNotation); val.fixup(input); // input == "9.8765e+01"
Para cumplir con decimals(), cuando sea -1 el número de dígitos utilizados vendrá determinado por QLocale::FloatingPointShortest. En caso contrario, la parte fraccionaria del número se truncará (con redondeo, según proceda) si su longitud supera decimals(). Cuando notation() es ScientificNotation esto se hace después de que el número haya sido puesto en su forma normalizada.
input = "-1234.6789"; val.setDecimals(2); val.setLocale(QLocale::C); val.setNotation(QDoubleValidator::StandardNotation); val.fixup(input); // input == "-1234.68"
Nota: Si decimals() está ajustado a, y la cadena proporciona, más de std::numeric_limits<double>::digits10, los dígitos que sobrepasen esa cantidad en la parte fraccionaria pueden ser cambiados. La cadena resultante codificará el mismo número de punto flotante, cuando se parsee a un double.
Esta función se introdujo en Qt 6.3.
void QDoubleValidator::setRange(double minimum, double maximum, int decimals)
Establece el validador para que acepte dobles de minimum a maximum inclusive, con un máximo de decimals dígitos después del punto decimal.
Nota: Si se establece el número de decimales en -1, el valor será ilimitado. Este es también el valor utilizado por un validador construido por defecto.
void QDoubleValidator::setRange(double minimum, double maximum)
Establece el validador para aceptar dobles de minimum a maximum inclusive sin cambiar el número de dígitos después del punto decimal.
Se trata de una función sobrecargada.
[override virtual] QValidator::State QDoubleValidator::validate(QString &input, int &pos) const
Reimplementa: QValidator::validate(QString &input, int &pos) const.
Devuelve Acceptable si la cadena input está en el formato correcto y contiene un double dentro del rango válido.
Devuelve Intermediate si input está en el formato incorrecto o contiene un double fuera del rango.
Devuelve Invalid si input no representa un doble o tiene demasiados dígitos después del punto decimal.
Nota: Si el rango válido consiste sólo en dobles positivos (por ejemplo, 0.0 a 100.0) y input es un doble negativo, entonces se devuelve Invalid. Si notation() es StandardNotation, y la entrada contiene más dígitos antes del punto decimal de los que puede tener un doble en el rango válido, se devuelve Invalid. Si notation() es ScientificNotation, y la entrada no está en el rango válido, se devuelve Intermediate. El valor aún puede volverse válido cambiando el exponente.
Por defecto, el parámetro pos no es utilizado por este validador.
© 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.