目的

有时,用单行编辑框想限制输入,但QLineEdit提供的setInputMask()方法用来限制输入字符或者数字还可以,但要做约束,得和验证器结合。

setInputMash()描述

此属性包含验证输入掩码
如果没有设置掩码,inputMask() 将返回一个空字符串。
设置QLineEdit的验证掩码。验证器可以代替掩码或与掩码结合使用;请参见setValidator()。
通过传递空字符串(“”),取消设置掩码并返回正常的QLineEdit操作。
下表显示了可以在输入掩码中使用的字符。在允许但不需要字符的情况下,需要空格字符作为空白的默认字符。

字符

描述

解释

A

ASCII alphabetic character required. A-Z, a-z.

只能输入ASCII字母字符。A-Z,a-z。

a

ASCII alphabetic character permitted but not required.

允许使用ASCII字母字符但不是必需的,可留空。

N

ASCII alphanumeric character required. A-Z, a-z, 0-9.

只能输入ASCII字母数字字符。A-Z,a-z,0-9。

n

ASCII alphanumeric character permitted but not required.

允许使用ASCII字母数字字符但不是必需的,可留空。

X

Any character required.

可以输入任何字符。

x

Any character permitted but not required.

允许使用任何字符但不是必需的,可留空。

9

ASCII digit required. 0-9.

只能输入ASCII数字字符。0-9。

0

ASCII digit permitted but not required.

允许使用ASCII数字字符但不是必需的,可留空。

D

ASCII digit required. 1-9.

只能输入ASCII数字字符。1-9。

d

ASCII digit permitted but not required (1-9).

允许使用ASCII数字字符但不是必需的(1-9)。

#

ASCII digit or plus/minus sign permitted but not required.

允许使用加号、减号符号的ASCII数字字符但不是必需的。

H

Hexadecimal character required. A-F, a-f, 0-9.

需要十六进制字符。A-F,a-f,0-9。

h

Hexadecimal character permitted but not required.

允许使用十六进制字符但不是必需的,可留空

B

Binary character required. 0-1.

需要二进制字符。0-1。

b

Binary character permitted but not required.

允许使用二进制字符但不是必需的,可留空

>

All following alphabetic characters are uppercased.

所有接下来的字母字符都是大写的。

<

All following alphabetic characters are lowercased.

所有接下来的字母字符都是小写的。

!

Switch off case conversion.

关闭大小写转换。

[ ] { }

Reserved.

保留。

\

Use \ to escape the special characters listed above to use them as separators.

使用\转义上面列出的特殊字符以将它们用作分隔符。

示例

1.只可输入整形数字
QLineEdit *lineEdit = new QLineEdit();
lineEdit->setInputMask("9999"); // 只可输入4位整数
2.只可输入Ip地址

以下是限制输入Ip格式,但数值是0-999范围

QLineEdit *lineEdit = new QLineEdit();
lineEdit->setInputMask("000.000.000.000;_"); // 只可输入3位带分号的整数,目的是限制输入3位数以内的IP地址

以下是使用正则表达式进行限制

QRegExp ipRegex("^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$");
    QValidator *ipValidator = new QRegExpValidator(ipRegex, this);
    ui->lineEdit->setValidator(ipValidator);

QLineEdit设置掩码Ip_git

3.输入标识符
QLineEdit *lineEdit = new QLineEdit();
lineEdit->setInputMask("nnnnnnnnn"); // 只可输入9位字母和数字组成的标识符
4.设置只能输入浮点数
ui->lineEdit->setInputMask("000.000");
5.设置只能输入电话号码
ui->lineEdit->setInputMask("+99-999-999999");

其中,掩码语法中的"D"表示只能输入数字,“0"表示必须输入数字或者空格,”+“表示必须输入加号,”-"表示必须输入减号。

QLineEdit设置掩码Ip_数字字符_02

6.设置只能输入日期
ui->lineEdit->setInputMask("0000-00-00");

结尾

如果对你有所帮助,记得点个赞哟~