QIntValidator 类

The QIntValidator class provides a validator that ensures a string contains a valid integer within a specified range. More...

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

属性

公共函数

QIntValidator(QObject *parent = nullptr)
QIntValidator(int minimum, int maximum, QObject *parent = nullptr)
virtual~QIntValidator()
intbottom() const
voidsetBottom(int)
voidsetRange(int bottom, int top)
voidsetTop(int)
inttop() const

重写的公共函数

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

信号

voidbottomChanged(int bottom)
voidtopChanged(int top)

详细描述

使用示例

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);

以下我们展示了几个验证器的示例。在实际应用中,它们通常会与上面的示例中的小部件相关联。

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

请注意,值 999 返回 Intermediate。由相同数量的数字组成的值被视为中间值。这是因为防止数字在范围内的数字不一定是最后输入的数字。这也意味着中间值可以具有前导零。

使用 setRange() 在一个调用中设置最小和最大值,或者单独使用 setBottom() 和 setTop() 进行设置。

QIntValidator 使用其 locale() 验证数字。例如,在阿拉伯语区域设置中,QIntValidator 将接受阿拉伯数字。

注意:设置在 locale() 上的 QLocale::NumberOptions 也会影响数字的解析方式。例如,由于默认不设置 QLocale::RejectGroupSeparator,验证器将接受分组分隔符。因此,建议使用 QLocale::toInt() 获取数值。

另请参阅QDoubleValidatorQRegularExpressionValidatorQLocale::toInt() 和 行编辑示例

属性文档

bottom : int

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

默认情况下,此属性的值从可用的最低有符号整数(-2147483648)派生。

访问函数

intbottom() const
voidsetBottom(int)

通知信号

voidbottomChanged(int bottom)

另请参阅setRange

top : int

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

默认情况下,此属性的值从可用的最高有符号整数(2147483647)派生。

访问函数

inttop() const
voidsetTop(int)

通知信号

voidtopChanged(int top)

另请参阅setRange

成员函数文档

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

构造一个接受所有整数的验证器,具有 parent 对象。

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

构造一个具有 parent 对象的验证器,该验证器接受从 minimummaximum 的整数(包括)。

[虚拟 noexcept] QIntValidator::~QIntValidator()

销毁验证器。

[覆盖虚函数] void QIntValidator::fixup(QString &input) const

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

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

将验证器的范围设置为仅接受介于 bottomtop 之间的整数(包括)。

[覆盖虚函数] QValidator::State QIntValidator::validate(QString &input, int &pos) const

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

如果输入是合法范围内的整数,则返回 Acceptable。如果输入的位数不多于范围的顶部,或者是一个合法范围内的整数的子串,则返回 Intermediate。否则,返回 Invalid

如果合法范围仅由正整数组成(例如,32 到 100),并且 input 是一个负整数,则返回 Invalid。另一方面,如果范围仅由负整数组成(例如,-100 到 -32),并且 input 是不带正号的正整数,则返回 Intermediate,因为用户可能即将输入减号(特别是对于从右到左的语言)。

同样,如果有效范围在46到53之间,那么41和59将被评估为中间状态,否则用户将无法将值从49更改为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

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

© 2024 Qt公司有限。此处包含的文档贡献为各自所有者的版权。本中的文档是根据自由软件开发基金会发布、GNU自由文档许可版本1.3的条款提供的。Qt及其相关徽标是芬兰和其他国家的Qt公司有限或其所属公司的商标。所有其他商标均属于其各自所有者。