QT-QLineEdit输入校验

本文最后更新于:1 年前

格式掩码

  • ui.lineedit ->setInputMask("000.000.000.000;_");

  • 其中 000.000.000.000;_ 的_ 表示填充符 0是匹配字符

格式校验(整数、浮点数、正则表达式)

  • 整数、浮点数使用QValidator验证
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//设置输入为整型

QIntValidator *ival = new QIntValidator();

ival->setRange(0,24);

ui.lineedit->setValidator(ival);

//设置输入为浮点型

QDoubleValidator *dval = new QDoubleValidator();

dval->setRange(10,10000);

dval->setDecimals(3);//还需额外设置小数点位数

//dval->setRange(10,10000,3); 也可以直接设置小数点位数

dval->setNotation(QDoubleValidator::StandardNotation);//设置不使用科学计数法,保证位数不会超出

ui.lineedit->setValidator(dval);
  • 正则表达式使用QRegExpValidator验证
1
2
3
4
5
6
7
8
//匹配邮箱

QRegExp rx("[a-zA-Z0-9-]+@[a-zA-Z0-9-]+\.[a-zA-Z-_]+");

QRedExpValidator *pReg = new QRegExpValidator(rx,this);

ui.email->setValidator(pReg);

  • 校验状态
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/*返回

enum State{

Invalid, 不正确

Intermediate, 未输入结束

Acceptable 格式正确

}

*/

const QValidator *v = ui.lineedit->validator();

int pos = 0;

if(v->validate(ui.lineedit->text(),pos)!=QValidator::Acceptable)

{

//校验不正确时的执行代码

}