我接管了前员工的代码,该代码使用如下输入:
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相关的任何内容。
同一形式的其他TextField接受任意输入。
答案 0 :(得分:1)
如上所述here:
如果符号设置为DoubleValidator.StandardNotation,则输入 在小数点前包含的位数比在 有效范围可能有,它被拒绝了。
所以你接近预期的行为。无论如何,我会用
notation: DoubleValidator.ScientificNotation
并查看是否允许任意输入。