为什么我可以输入以下表格的位数有限?

时间:2018-02-01 07:49:07

标签: qt validation qml qt5

我接管了前员工的代码,该代码使用如下输入:

            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接受任意输入。

1 个答案:

答案 0 :(得分:1)

如上所述here

  

如果符号设置为DoubleValidator.StandardNotation,则输入   在小数点前包含的位数比在   有效范围可能有,它被拒绝了。

所以你接近预期的行为。无论如何,我会用

notation: DoubleValidator.ScientificNotation

并查看是否允许任意输入。