Qt实战案例(9)——利用QLineEdit设置输入掩码来限制输入内容

目录

    • 一、输入掩码介绍
    • 二、代码示例
      • 2.1 input Mask介绍
      • 2.2 input Mask示例
      • 2.3 输入与输出
    • 三、拓展——输入约束

一、输入掩码介绍

QLineEdit提供了输入掩码(input Mask)来限制输入的内容,可以使用一些特殊的字符来设置输入的格式和内容,这些字符中有的起限制作用且必须要输入一个字符,有的只是起限制作用,但可以不输入字符而是以空格代替。
这些特殊字符含义如下表所示。

字符(必须输入) 字符(可留空) 含义
A a 只能输入A~Z,a~z
N n 只能输入A~Z,a~z,0~9
X x 可以输入任意字符
9 0 只能输入0~9
D d 只能输入1~9
# 只能输入加号(+),减号(-),0~9
H h 只能输入十六进制字符,A~F,a~f,0~9
B b 只能输入二进制字符0或1
> 后面的字母字符自动转换为大写
< 后面的字母字符自动转换为小写
停止字母字符的大小写转换
\ 将该表中的特殊字符正常显示用作分隔符

二、代码示例

2.1 input Mask介绍

当需要用到输入掩码时,只需要修改input Mask的值即可。
Qt实战案例(9)——利用QLineEdit设置输入掩码来限制输入内容_第1张图片

2.2 input Mask示例

将lineEdit的属性设置为:

>AA-90-bb-! aa\#H ;*

其含义如下:

  • “>”表明后面输入的字母自动转为大写;
  • “AA”表明开始必须输入两个字母,而且会自动变为大写(因为>);
  • “-”表示分隔符,直接显示;
  • “9”表示必须输入一个数字;
  • “0”表示输入一个数字或者留空;
  • “bb”表示留空或者输入两个二进制字符0或1;
  • “!”表示停止大小写转换,即最开始的“>”不再起作用;
  • “aa”表示可以留空,或者输入两个字母;
  • “#”表示将“#”作为分隔符,因为“#”在这里有特殊含义,所以其前面要加上“\”;
  • “H”表示必须要输入一个十六进制的字符;
  • “*”表示用*来填充空格;

2.3 输入与输出

初始LineEdit如下:
Qt实战案例(9)——利用QLineEdit设置输入掩码来限制输入内容_第2张图片
输入字符后LineEdit如下:
Qt实战案例(9)——利用QLineEdit设置输入掩码来限制输入内容_第3张图片

【注】:也可以调用setInputMask()函数来设置输入掩码。

在lineEdit上右击转到returnPressed()槽:
Qt实战案例(9)——利用QLineEdit设置输入掩码来限制输入内容_第4张图片
输入如下内容:

void MainWindow::on_lineEdit_returnPressed()
{
    qDebug()<<ui->lineEdit->text();//输出lineEdit的内容
    qDebug()<<ui->lineEdit->displayText();//输出lineEdit显示的内容
}

这时运行程序进行输入,完成后按下回车键,可以查看输出内容。
如输入如下内容:
在这里插入图片描述
输出格式如下:

"AA-11-0- za#a"
"AA-11- 0- za#a"

需要注意的是,如果没有输入完必须要输入的字符,按下回车是没有效果的。

三、拓展——输入约束

除此之外,还可以使用验证器类QValidator对输入进行约束,代码如下:

//新建验证器,指定范围为100~999
QValidator *validator=new QIntValidator(100,999,this);
//使用验证器
ui->lineEdit2->setValidator(validator);

这样,lineEdit2就只能输入1000~999之间的数字。
除此之外,QValidator类还提供了QDoubleValidator用来设置浮点数。


ok,以上便是本文的全部内容了,如果对你有所帮助,记得点个赞哟~

你可能感兴趣的:(Qt,qt)