Qt学习(二)算法(qAbs()、qMax()、qRound()、qSwap())及正则表达式

本文介绍了Qt5中的几个常用算法,包括qAbs()、qMax()、qRound()和qSwap(),并讲解了如何使用QRegExp进行正则表达式匹配,以及在使用QRegExpValidator时需要注意的事项。同时,文中提到了正则表达式的验证状态和编写正则表达式时的注意事项。

算法及正则表达式

一、Qt5常用算法
1.double c=qAbs(a):数qAbs()返回double型数值a的绝对值;
2.double max=qMax(b,c):函数qMax()返回两个数值中的最大值;
3.int bn=qRound(b):返回一个与浮点数最接近的整数值(四舍五入);
4.int cn=qSwap(bn,cn):交换两数的值;
代码

#include <QDebug>
int main(int argc,char *argv[])
{
    double a=-19.3,b=9.7;
    double c=qAbs(a);        //c=19.3
    double max=qMax(b,c);    //max=c=19.3


    int bn=qRound(b);        //bn=10
    int cn=qRound(c);        //cn=19


    qDebug()<<"a="<<a;
    qDebug()<<"b="<<b;
    qDebug()<<"c=qAbs(a)= "<<c;
    qDebug()<<"qMax(b,c)= "<<max;
    qDebug()<<"bn=qRound(b)= "<<bn;
    qDebug()<<"cn=qRound(c)= "<<cn;


    qSwap(bn,cn);
    qDebug()<<"qSwap(bn,cn):"<<"bn="<<bn<<" cn="<<cn;


    return 0;
}

效果图:
常用算法的效果图
二、基本正则表达式
正则表达式由表达式(expressions)、量词(quantifiers)和断言(assertions)组成。
正则表达式使用之前需要添加头类为QRegExpQRegExpValidator,否则会出现编译错误
RegExp

The QRegExp class provides pattern matching using regular expressions.

QRegExp &operator=(const QRegExp &rx)

QRegExpValidator

The QRegExpValidator class is used to check a string against a regular expression.

QRegExpValidator(QObject *parent = Q_NULLPTR)

QRegExpValidator(const QRegExp &rx, QObject *parent = Q_NULLPTR)

QRegExpValidato类中第三条引用表示的其释意,我们可以得出QRegExpValidato(rx,pos)中的pos不能直接写成0,否则会出现编译时的错误。
错误类型为:
error: invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int’
if(QValidator::Acceptable!=v.validate(input_2,0))
常见的正则字符:
正则符号
正则符号
QValidator::Invalid:值为0,表示完全不匹配
QValidator::Intermediate:值为1,表示部分匹配
QValidator::Acceptable:值为2,表示完全匹配

代码:

    QString=input_2="",input_3="";
    QRegExp rx("[a-z]{1,3}\\d{3,7}");       			//用户名格式
    //用户名为一至三位小写字母加三至七位数字组成
    QRegExp re("[a-z]{0,3}\\d{0,7}[^abc]");  	     //密码格式
    //密码格式请对照上表自行查看
    QRegExpValidator v(rx,0);
    QRegExpValidator u(re,0);
    input_2=edit_1->text();
    input_3=edit_2->text();
    int pos=0;
    if(QValidator::Acceptable!=v.validate(input_2,pos))		//检验用户名
    {
        label_5->setText("用户名错误");
    }
    else
    {
        if(QValidator::Acceptable==u.validate(input_3,pos))	//检验密码
        {
            label_5->setText("登录成功");
        }
        else
            label_5->setText("密码错误");
    }

在写正则表达式限制输入格式时,请注意== QRegExp rx("[a-z]{1,3}\d{3,7}"),双引号里面的限制输入的字符符号一定要是在输入法的英文模式下打出来==,否则编译时并不会报错,可以运行,但运行之后的逻辑并不和您所想的限制条件一样,我就在这地方困了10多分钟,所幸项目不大,找了出来。
运行界面效果图:

在这里插入图片描述
在这里插入图片描述
刚刚开始学习Qt,并不是很精通,若有错误,欢迎指正,感谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值