Qt5.2.1中QLineEdit设置setInputMask不符合预期问题求助
Qt5.2.1 QLineEdit输入掩码显示异常原因分析
问题根源:输入掩码规则理解偏差
你使用的输入掩码"009.9;_",按照Qt的输入掩码规则,每个字符对应含义如下:
0:必须输入0-9的数字,不能留空9:可选输入0-9的数字,可留空;_:指定空位用_填充
这个掩码的实际结构是:
- 第1位:必须输入数字
- 第2位:必须输入数字
- 第3位:可选输入数字
- 第4位:固定显示
.(无需输入) - 第5位:可选输入数字
为什么显示40_.0?
当调用pLineEdit->setText("40.0")时,Qt会按掩码位置逐个匹配内容:
"4"填充到第1位(必须数字位)"0"填充到第2位(必须数字位)- 接下来的字符是
.,但掩码第3位要求是数字(可选),无法匹配,因此Qt用占位符_填充第3位 - 随后把
.匹配到掩码中固定的第4位 - 最后
"0"填充到第5位(可选数字位)
最终就呈现出40_.0的结果。
实现预期40.0显示的调整方案
如果需要的是「前两位可选数字,随后必须是一位数字、.、一位数字」的输入规则,应调整掩码为"990.0;_":
- 前两位
9:可选输入数字 - 第三位
0:必须输入数字 - 固定
. - 第五位
0:必须输入数字
若允许类似x.x(一位整数)的格式,也可使用"90.0;_",可根据实际需求灵活调整。
内容的提问来源于stack exchange,提问作者Fabius Wiesner
相关产品推荐
相关产品推荐

