目的
有时,用单行编辑框想限制输入,但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);
3.输入标识符
QLineEdit *lineEdit = new QLineEdit();
lineEdit->setInputMask("nnnnnnnnn"); // 只可输入9位字母和数字组成的标识符
4.设置只能输入浮点数
ui->lineEdit->setInputMask("000.000");
5.设置只能输入电话号码
ui->lineEdit->setInputMask("+99-999-999999");
其中,掩码语法中的"D"表示只能输入数字,“0"表示必须输入数字或者空格,”+“表示必须输入加号,”-"表示必须输入减号。
6.设置只能输入日期
ui->lineEdit->setInputMask("0000-00-00");
结尾
如果对你有所帮助,记得点个赞哟~