我从一位前员工那里接管了代码,它使用如下输入:
TextField {
width: 0.5*parent.width
height: 0.5*parent.height
validator: DoubleValidator {
notation: DoubleValidator.StandardNotation
decimals: 3
bottom: -99.99
top: 99.99
}
text: scanCom.x
horizontalAlignment: TextInput.AlignHCenter
verticalAlignment: TextInput.AlignVCenter
onEditingFinished: {
scanCom.x = parseFloat(text)
}
onActiveFocusChanged: {
if (!activeFocus && !acceptableInput) {
xInvalidValueId.visible = true
text = scanCom.x
}
}
}
它不允许输入非数字(这很好),但也将可用数字限制为总共 2 位。我可以输入 88、8.8 或 0.88,但不能输入 88.8。验证器似乎只是检查输入是否为双精度。它如何限制我可以键入的内容?
我用grep --color -Iins 'Hints' *.cpp *.h *.qml
在源代码中搜索提示,没有找到与inputMethodHints相关的任何内容。
同一形式的其他文本字段接受任意输入。
如下所述:
如果表示法设置为 DoubleValidator.StandardNotation,并且输入 小数点前包含的数字多于小数点前的双精度 有效范围可能有,它被拒绝。
因此,您接近预期的行为。无论如何,我会使用
notation: DoubleValidator.ScientificNotation
并查看是否允许任意输入。