QDoubleValidator类
QDoubleValidator类提供了浮点数的范围检查。 更多...
头文件 | #include <QDoubleValidator> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake | QT += gui |
继承 | QValidator |
公共类型
枚举 | Notation { StandardNotation, ScientificNotation } |
属性
公共函数
QDoubleValidator(QObject *parent = nullptr) | |
QDoubleValidator(double bottom, double top, int decimals, QObject *parent = nullptr) | |
虚拟 | ~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 |
重实现公共函数
(since 6.3) virtual void | fixup(QString &input) const override |
virtual QValidator::State | validate(QString &input, int &pos) const override |
信号
void | bottomChanged(double bottom) |
void | decimalsChanged(int decimals) |
void | notationChanged(QDoubleValidator::Notation notation) |
void | topChanged(double top) |
详细描述
QDoubleValidator 提供了上界、下界和小数点后数字的极限。
您可以用 setRange() 或 setBottom() 和 setTop() 来一次性设置可接受的数值范围。使用 setDecimals() 设置小数位数。验证函数 validate() 返回验证状态。
QDoubleValidator 使用其 locale() 来解析数值。例如,在德语区域设置中,"1,234" 将被视为小数数值 1.234。在阿拉伯语区域设置中,QDoubleValidator 将接受阿拉伯数字。
注意:在 locale() 上设置的 locale() 的 NumberOptions 也会影响数值的解析方式。例如,由于 QLocale::RejectGroupSeparator 默认未设置(除了在 "C"
区域设置中),验证器将接受分组分隔符。如果字符串通过验证,请通过 locale().toDouble() 获取其数值。
另请参阅:QIntValidator、QRegularExpressionValidator、QLocale::toDouble(),以及 行编辑示例。
成员类型文档
enum QDoubleValidator::Notation
此枚举定义了允许的双精度浮点数输入格式。
常量 | 值 | 描述 |
---|---|---|
QDoubleValidator::StandardNotation | 0 | 字符串以标准格式编写,可选地包含整数部分后跟分隔符和小数部分,例如 "0.015" 。 |
QDoubleValidator::ScientificNotation | 1 | 字符串以科学形式编写,可选地在标准格式后追加指数部分,例如 "1.5E-2" 。 |
整数部分可能包含符号,这以及小数部分、指数和任何数字分组的位置都取决于区域设置。 QDoubleValidator 不检查其找到的任何数字分组分隔符的放置(这也取决于区域设置),但如果在 locale().numberOptions()
中设置了 QLocale::RejectGroupSeparator,它将拒绝包含它们的输入。
另请参阅:QLocale::numberOptions、QLocale::decimalPoint、QLocale::exponential 和 QLocale::negativeSign。
属性文档
bottom : double
此属性包含验证器的最小可接受值
默认情况下,此属性包含 -ininfinity 值。
访问函数
double | bottom() const |
void | setBottom(double) |
通知信号
void | bottomChanged(double bottom) |
另请参阅:setRange。
decimals : int
此属性包含验证器的最大小数位数
默认情况下,此属性包含 -1 的值,表示接受任何位数。
访问函数
int | decimals() const |
void | setDecimals(int) |
通知信号
void | decimalsChanged(int decimals) |
另请参阅:setRange。
notation : Notation
该属性保留字符串描述数字的表示法。
默认情况下,此属性设置为ScientificNotation。
访问函数
QDoubleValidator::Notation | notation() const |
void | setNotation(QDoubleValidator::Notation) |
通知信号
void | notationChanged(QDoubleValidator::Notation notation) |
另请参阅Notation。
top : double
该属性保留验证器的最大可接受值。
默认情况下,此属性包含一个无限大的值。
访问函数
double | top() const |
void | setTop(double) |
通知信号
void | topChanged(double top) |
另请参阅:setRange。
成员函数文档
[显式]
QDoubleValidator::QDoubleValidator(QObject *parent = nullptr)
构造一个验证器对象,它有一个可接受任何双精度浮点数的父对象。
QDoubleValidator::QDoubleValidator(double bottom, double top, int decimals, QObject *parent = nullptr)
构造一个验证器对象,它有一个父对象。此验证器将接受从bottom到top(包含)的双精度浮点数,最多有decimals位小数。
[虚拟非抛出 nausea资娜娜]
QDoubleValidator::~QDoubleValidator()
销毁验证器。
[覆盖虚拟,自 6.3]
void QDoubleValidator::fixup(QString &input) const
重实现:QValidator::fixup(QString &input) const。
这是一个重载函数。
尝试将input字符串修复为双精度浮点数的可接受表示形式。
数字格式由notation、decimals、locale以及后者的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)
将验证器设置为接受从minimum到maximum的双精度浮点数,小数点后最多有decimals位数字。
注意:将小数位数设置为-1将使其变为无限。这也是默认构造的验证器的值。
void QDoubleValidator::setRange(double minimum, double maximum)
这是一个重载函数。
将验证器设置为接受从minimum到maximum的双精度浮点数,不包括小数点后的数字位数。
[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.在芬兰和其他国家的商标。所有其他商标均为其各自所有者的财产。