Qt InputMask
QLineEdit
有一个属性是 InputMask
,可以使用 setInputMask()
进行设置,目的是设置字符掩码,限制用户输入的内容必须符合掩码。
下面是 Qt6 规范:
掩码字符 | 含义 |
---|---|
A | 只能是字母且必须,取值为 [a-zA-Z] |
a | 同上但不是必须的 |
N | 字母或数字 [0-9a-zA-Z] |
n | 同上但不是必须的 |
X | 任何字符 |
x | 同上但不是必须的 |
9 | 数字 [0-9] |
0 | 同上但不是必须的 |
D | 数字 [1-9] |
d | 同上但不是必须的 |
# | 数字或加减号 [0-9+-] ,不是必须的 |
H | 十六进制字符 [0-9a-fA-F] |
h | 同上但不是必须的 |
B | 二进制字符 [01] |
b | 同上但不是必须的 |
还可以使用元字符用于增强规则:
元字符 | 含义 |
---|---|
> | 所有字符都被转换为大写 |
< | 所有字符都被转换为小写 |
! | 关闭大小写转换 |
;c | 终止掩码规则并将空字符设置为 c |
[ ] { } | 保留内容 |
\ | 转义上述掩码字符或元字符 |
总结:
- 掩码字符中,大写为必须输入,小写为可选
- 元字符可以混合使用以便控制输入方式
实例 | 含义 |
---|---|
000.000.000.000;_ | IP 地址,_ 表示空白 |
HH:HH:HH:HH:HH:HH;_ | MAC 地址 |
0000-00-00 | ISO 日期,空白为空格 ' ' |
>AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;# | 许可证号码,大写,空白为 # |
如果我需要设计一个输入 4 字节十六进制数字(大写,_
表示空白)的输入框,可以使用 >HH-HH-HH-HH;_
来表示。