QDoubleValidator类

QDoubleValidator类提供了浮点数的范围检查。 更多...

头文件 #include <QDoubleValidator>
CMakefind_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmakeQT += gui
继承 QValidator

公共类型

枚举Notation { StandardNotation, ScientificNotation }

属性

公共函数

QDoubleValidator(QObject *parent = nullptr)
QDoubleValidator(double bottom, double top, int decimals, QObject *parent = nullptr)
虚拟~QDoubleValidator()
doublebottom() const
intdecimals() const
QDoubleValidator::Notationnotation() const
voidsetBottom(double)
voidsetDecimals(int)
voidsetNotation(QDoubleValidator::Notation)
voidsetRange(double minimum, double maximum, int decimals)
voidsetRange(double minimum, double maximum)
voidsetTop(double)
doubletop() const

重实现公共函数

(since 6.3) virtual voidfixup(QString &input) const override
virtual QValidator::Statevalidate(QString &input, int &pos) const override

信号

voidbottomChanged(double bottom)
voiddecimalsChanged(int decimals)
voidnotationChanged(QDoubleValidator::Notation notation)
voidtopChanged(double top)

详细描述

QDoubleValidator 提供了上界、下界和小数点后数字的极限。

您可以用 setRange() 或 setBottom() 和 setTop() 来一次性设置可接受的数值范围。使用 setDecimals() 设置小数位数。验证函数 validate() 返回验证状态。

QDoubleValidator 使用其 locale() 来解析数值。例如,在德语区域设置中,"1,234" 将被视为小数数值 1.234。在阿拉伯语区域设置中,QDoubleValidator 将接受阿拉伯数字。

注意:locale() 上设置的 locale() 的 NumberOptions 也会影响数值的解析方式。例如,由于 QLocale::RejectGroupSeparator 默认未设置(除了在 "C" 区域设置中),验证器将接受分组分隔符。如果字符串通过验证,请通过 locale().toDouble() 获取其数值。

另请参阅:QIntValidatorQRegularExpressionValidatorQLocale::toDouble(),以及 行编辑示例

成员类型文档

enum QDoubleValidator::Notation

此枚举定义了允许的双精度浮点数输入格式。

常量描述
QDoubleValidator::StandardNotation0字符串以标准格式编写,可选地包含整数部分后跟分隔符和小数部分,例如 "0.015"
QDoubleValidator::ScientificNotation1字符串以科学形式编写,可选地在标准格式后追加指数部分,例如 "1.5E-2"

整数部分可能包含符号,这以及小数部分、指数和任何数字分组的位置都取决于区域设置。 QDoubleValidator 不检查其找到的任何数字分组分隔符的放置(这也取决于区域设置),但如果在 locale().numberOptions() 中设置了 QLocale::RejectGroupSeparator,它将拒绝包含它们的输入。

另请参阅:QLocale::numberOptionsQLocale::decimalPointQLocale::exponentialQLocale::negativeSign

属性文档

bottom : double

此属性包含验证器的最小可接受值

默认情况下,此属性包含 -ininfinity 值。

访问函数

doublebottom() const
voidsetBottom(double)

通知信号

voidbottomChanged(double bottom)

另请参阅:setRange

decimals : int

此属性包含验证器的最大小数位数

默认情况下,此属性包含 -1 的值,表示接受任何位数。

访问函数

intdecimals() const
voidsetDecimals(int)

通知信号

voiddecimalsChanged(int decimals)

另请参阅:setRange

notation : Notation

该属性保留字符串描述数字的表示法。

默认情况下,此属性设置为ScientificNotation

访问函数

QDoubleValidator::Notationnotation() const
voidsetNotation(QDoubleValidator::Notation)

通知信号

voidnotationChanged(QDoubleValidator::Notation notation)

另请参阅Notation

top : double

该属性保留验证器的最大可接受值。

默认情况下,此属性包含一个无限大的值。

访问函数

doubletop() const
voidsetTop(double)

通知信号

voidtopChanged(double top)

另请参阅:setRange

成员函数文档

[显式] QDoubleValidator::QDoubleValidator(QObject *parent = nullptr)

构造一个验证器对象,它有一个可接受任何双精度浮点数的父对象。

QDoubleValidator::QDoubleValidator(double bottom, double top, int decimals, QObject *parent = nullptr)

构造一个验证器对象,它有一个父对象。此验证器将接受从bottomtop(包含)的双精度浮点数,最多有decimals位小数。

[虚拟非抛出 nausea资娜娜] QDoubleValidator::~QDoubleValidator()

销毁验证器。

[覆盖虚拟,自 6.3] void QDoubleValidator::fixup(QString &input) const

重实现:QValidator::fixup(QString &input) const

这是一个重载函数。

尝试将input字符串修复为双精度浮点数的可接受表示形式。

数字格式由notationdecimalslocale以及后者的numberOptions确定。

为了符合notation,当使用ScientificNotation时,固定值将以归一化形式表示,这意味着任何非零值都将有一个非零数字在小数点之前。

QString input = "0.98765e2";
QDoubleValidator val;
val.setLocale(QLocale::C);
val.setNotation(QDoubleValidator::ScientificNotation);
val.fixup(input); // input == "9.8765e+01"

为了符合decimals,当它为-1时,小数点后的数字数量将由QLocale::FloatingPointShortest确定。否则,当小数部分的长度超出decimals时,小数部分将被截断(根据适当的情况进行舍入)。

input = "-1234.6789";
val.setDecimals(2);
val.setLocale(QLocale::C);
val.setNotation(QDoubleValidator::StandardNotation);
val.fixup(input); // input == "-1234.68"

注意:如果decimals()被设置为,并且字符串提供,超过std::numeric_limits<double>::digits10的数字,小数部分可能会导致超过这么多数字被改变。当解析为double时,生成字符串应编码相同的浮点数。

此函数在 Qt 6.3 中引入。

void QDoubleValidator::setRange(double minimum, double maximum, int decimals)

将验证器设置为接受从minimummaximum的双精度浮点数,小数点后最多有decimals位数字。

注意:将小数位数设置为-1将使其变为无限。这也是默认构造的验证器的值。

void QDoubleValidator::setRange(double minimum, double maximum)

这是一个重载函数。

将验证器设置为接受从minimummaximum的双精度浮点数,不包括小数点后的数字位数。

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

重新实现: QValidator::validate(QString &input, int &pos) const.

如果字符串input格式正确且包含有效范围内的双精度浮点数,则返回Acceptable

如果input格式错误或包含范围之外的双精度浮点数,则返回Intermediate

如果input不表示双精度浮点数或小数点后有太多数字,则返回Invalid

注意:如果有效范围仅包括正双精度浮点数(例如,0.0到100.0),并且input是负双精度浮点数,则返回Invalid。如果notation()设置为StandardNotation,并且输入中小数点前的数字比有效范围内的双精度浮点数多,则返回Invalid。如果notation()为ScientificNotation,并且输入不在有效范围内,则返回Intermediate。通过更改指数,该值可能仍然有效。

默认情况下,此验证器不使用pos参数。

© 2024 The Qt Company Ltd. 本文档中包含的贡献的版权属于其各自的所有者。本提供的文档是根据由Free Software Foundation发布的GNU自由文档许可证版本1.3的条款许可的。Qt及其标志是The Qt Company Ltd.在芬兰和其他国家的商标。所有其他商标均为其各自所有者的财产。