您的位置:首页 > 汽车 > 时评 > 深圳宝安区核酸检测点_工地建筑劳务公司招工平台_重庆seo排名方法_西安百度百科

深圳宝安区核酸检测点_工地建筑劳务公司招工平台_重庆seo排名方法_西安百度百科

2024/10/21 9:34:00 来源:https://blog.csdn.net/m0_51005282/article/details/142470489  浏览:    关键词:深圳宝安区核酸检测点_工地建筑劳务公司招工平台_重庆seo排名方法_西安百度百科
深圳宝安区核酸检测点_工地建筑劳务公司招工平台_重庆seo排名方法_西安百度百科

QT QLineEdit 控件输入验证

一、格式掩码

  void setInputMask(const QString &inputMask);
    使 QLineEdit 控件只允许输入自定义的格式字符串,具体自定义组合用到的字符如下:

A		ASCII 字母。A-Z、a-z;不可用空格填充。
a		ASCII 字母。A-Z、a-z;可用空格填充。
N		ASCII 字母、数字。A-Z、a-z、0-9;不可用空格填充。
n		ASCII 字母、数字。A-Z、a-z、0-9;可用空格填充。
X		任何字符;不可用空格填充。
x		任何字符;可用空格填充。
9		ASCII 数字,0 - 9;不可用空格填充。
0		ASCII 数字,0 - 9;可用空格填充。
D		ASCII 数字,1 - 9;不可用空格填充。
d		ASCII 数字,1 - 9;可用空格填充。
#		ASCII 正负数字;可用空格填充。
H		十六进制字符;不可用空格填充。
h		十六进制字符;可用空格填充。
B		二进制字符,0 - 1;不可用空格填充
b		二进制字符,0 - 1;可用空格填充
>		该符号之后所有字母全大写
<		该符号之后所有字母全小写
...

  比较常用的可以用于 IP 地址的自定义,如下:

ui.lineEditInputMaks->setInputMask("000.000.000.000;_");//;_表示前面没有写的使用 _ 来填充

二、格式校验

  setValidator(QValidator) 为 QLineEdit 设置校验器,只允许输入允许或指定的数据,比如整数、浮点数、正则表达式
  (1) 进行整数与浮点数的校验
    QVaildator :用于用于只能输入允许的或者指定的数据,调用其子类来进行对应的数据操作,下面指定了其子类与其常用方法:
      QIntValidator:QVaildator 子类,用于设定整型校验器
        setRange(start, end) 其子类中的方法,设置数字范围
      QDoubleValidator:QVaildator 子类,用于设定浮点型校验器
        setRange(start, end) 其子类中的方法,设置数字范围
        setRange(start, end, dic) 其子类中的方法,设置数字范围,并设置 小数点后几位
         setDecimals 其子类中的方法,设置小数点位数
         setNotation 设置其计数方式,默认为科学技术法,会导致我们输入数据我们看到的是输入一长串数字都可以,且超出了我们指定的范围,所以我们需要调用 setNotation 方法来修改。
          enum Notation {
            StandardNotation,//普通计数法
            ScientificNotation//科学计数法
          };
    代码演示:
      ①整型校验器,如下:

//设置整型校验器
//整型校验器声明
QIntValidator* intV = new QIntValidator();
intV->setRange(0, 200);//设置输入范围
//指定校验器
ui.lineEdit_EidtChanged->setValidator(intV);

      ②浮点型校验器,如下:

//浮点型校验器声明
QDoubleValidator* doubleV = new QDoubleValidator();
doubleV->setRange(0, 200, 3);//设置输入范围以及小数点后几位
//设置计数法为普通计数法
doubleV->setNotation(QDoubleValidator::StandardNotation);
//指定校验器
ui.lineEdit_EidtChanged->setValidator(doubleV);

  (2) 正则表达式进行校验
    在 QT 6.0版本 之前使用 QRegExpValidator 类来创建一个正则表达式验证器,但是在 QT 6.0版本 之后,这个类就不能用了,也就是说需要使用另外一个类:QRegularExpressionValidator,这里以 QT 6.0之后的版本为主介绍:
      QRegularExpressionValidator:    创建一个正则表达式验证器
      代码演示(以邮箱验证为演示):

QRegularExpression regExp("[a-zA-Z0-9-]+@[a-zA-Z0-9-_]+\\.[a-zA-Z]+");
QRegularExpressionValidator* regExpValidator = new QRegularExpressionValidator(regExp);
ui.lineEdit_EidtChanged->setValidator(regExpValidator);

    【注意】如果对于一个 QLineEdit 设置正则表达式,比如上面,如果我输入一个邮箱,但是并没有输入完,这个时候这个邮箱如果被保存到后台数据库,下次在使用时肯定会有错误,所以对于正则表达式需要加一个书写完成后的验证,格式如下:

//校验正则表达式是否正确
//获取到 lineEdit_EidtChanged的校验器
const QValidator* validator = ui.lineEdit_EidtChanged->validator();
int pos = 0;//获取到校验开始位置
QString str = ui.lineEdit_EidtChanged->text();//获取到需要校验的文本
/*
enum State {Invalid,//不合法Intermediate,//没有输入结束,例如 1wqw@qq.Acceptable//合法
};
*/
QValidator::State state = validator->validate(str, pos);//进行校验
//判断是否校验成功
if (state == QValidator::Acceptable)
{ui.labelValidator->setText(ui.lineEditRegExp->text());
}
else 
{ui.labelValidator->setText(QString::fromLocal8Bit("验证失败,请输入正确的字符"));
}

    这里通过 QLineEdit 中的 validator() 方法获取到其校验器,然后通过校验器重新校验一下该 QLineEdit 控件的文本,通过枚举 State 判断是否正确。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com