QIntValidator 类
The QIntValidator class provides a validator that ensures a string contains a valid integer within a specified range. More...
头文件 | #include <QIntValidator> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake | QT += gui |
继承 | QValidator |
属性
公共函数
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 |
重写的公共函数
virtual void | fixup(QString &input) const override |
virtual QValidator::State | validate(QString &input, int &pos) const override |
信号
void | bottomChanged(int bottom) |
void | topChanged(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() 获取数值。
另请参阅QDoubleValidator、QRegularExpressionValidator、QLocale::toInt() 和 行编辑示例。
属性文档
bottom : int
此属性包含验证器可接受的最小值
默认情况下,此属性的值从可用的最低有符号整数(-2147483648)派生。
访问函数
int | bottom() const |
void | setBottom(int) |
通知信号
void | bottomChanged(int bottom) |
另请参阅setRange。
top : int
此属性包含验证器可接受的最大值
默认情况下,此属性的值从可用的最高有符号整数(2147483647)派生。
访问函数
int | top() const |
void | setTop(int) |
通知信号
void | topChanged(int top) |
另请参阅setRange。
成员函数文档
[显式]
QIntValidator::QIntValidator(QObject *parent = nullptr)
构造一个接受所有整数的验证器,具有 parent 对象。
QIntValidator::QIntValidator(int minimum, int maximum, QObject *parent = nullptr)
构造一个具有 parent 对象的验证器,该验证器接受从 minimum 到 maximum 的整数(包括)。
[虚拟 noexcept]
QIntValidator::~QIntValidator()
销毁验证器。
[覆盖虚函数]
void QIntValidator::fixup(QString &input) const
重新实现了:QValidator::fixup(QString &input) const。
void QIntValidator::setRange(int bottom, int top)
将验证器的范围设置为仅接受介于 bottom 和 top 之间的整数(包括)。
[覆盖虚函数]
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公司有限或其所属公司的商标。所有其他商标均属于其各自所有者。