Qt限制LineEdit的输入

要限制输入需要用到Validator才能限制QLineEdit的输入,具体的两种表现方式。

第一种是利用正则表达式QRegExp;例如下图所示:

    QRegExp rx1 = QRegExp("[0-9.]+$");//正则表达式,限制数字与点的输入,
    QValidator *validator1 = new QRegExpValidator(rx1, ui.lineEdit_InputIP);
    ui.lineEdit_InputIP->setValidator(validator1);//验证输入

    
    QRegExp rx2("[0-9A-Za-z]{1,8}$");//正则表达式,限制数字与字母的输入,只能输入8位数字与字母的组合
    QValidator *validator2 = new QRegExpValidator(rx2, ui.lineEdit_InputSN);
    ui.lineEdit_InputSN->setValidator(validator2);

    
    QRegExp rx3 = QRegExp("[0-9]{1,3}$");//正则表达式,限制数字的输入,只能输入000-999
    QValidator *validator3 = new QRegExpValidator(rx3, ui.lineEdit_InputContinueNum);
    ui.lineEdit_InputContinueNum->setValidator(validator3);

 

    //限制增益的输入控件输入
    QRegExp rx5 = QRegExp("[0-3]");//正则表达式,限制数字0-5的输入,
    QValidator *validator5 = new QRegExpValidator(rx5, ui.lineEdit_Gain);
    ui.lineEdit_Gain->setValidator(validator5);

    //限制帧率的输入控件输入
    QRegExp rx6 = QRegExp("[0-9]{1,2}");//正则表达式,限制数字的输入,只能输入0-99
    QValidator *validator6 = new QRegExpValidator(rx6, ui.lineEdit_AcqFrameRate);
    ui.lineEdit_AcqFrameRate->setValidator(validator6); 

第二种是利用QIntValidator,QDoubleValidator等四个类来限制输入,例如

   ui.lineEdit_Exp->setValidator(new QIntValidator(1, 1000000, this));  //只能输入Int型的1-1000000,但是仍然能输入0000000
    //ui.lineEdit_Exp->setValidator(new QDoubleValidator(1.0, 1000000.0,2, this));
    //只能输入bouble型的1.0-1000000.0,但是仍然能输入0000000,小数点后只能有2位

你可能感兴趣的:(QT)