You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QML使用DoubleValidator时输入框失焦小数自动转整数问题

问题原因

这是QML DoubleValidator默认配置下的已知逻辑问题,触发时机是TextField失焦时自动执行的验证器修正流程:

  • 未手动配置参数的DoubleValidator,默认解析逻辑存在判断分支缺陷:对0.开头、小数点后带任意个连续0再接非零数字的输入串,会错误判定小数点为无效输入字符直接剔除,最终把剩余数字按整数返回,就会出现0.2变2、0.0005变5的现象。
  • 当你在非零数字后再追加任意数字时,输入串长度会触发解析逻辑的小数位识别分支,小数点不会被剔除,所以数值能被正常解析。
修复方法

不要只空挂DoubleValidator控件,显式配置核心参数即可解决问题,参考代码如下:

TextField {
    placeholderText: "请输入双精度浮点数"
    validator: DoubleValidator {
        // 按业务需求设置允许的数值范围,示例为双精度浮点数的上下限
        bottom: -Number.MAX_VALUE
        top: Number.MAX_VALUE
        // 按业务需求设置允许保留的最大小数位数
        decimals: 10
        // 指定数值记法,不需要科学计数法就用StandardNotation
        notation: DoubleValidator.StandardNotation
    }
}

多语言适配场景下,记得给DoubleValidator绑定和TextField一致的locale属性,避免不同区域小数分隔符规则差异(部分地区用逗号作为小数分隔符)导致的解析异常。

内容的提问来源于stack exchange,提问作者f-ij

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 11:06:18