QML IntValidator底部的奇怪行为> 0

时间:2014-03-11 14:25:02

标签: qt validation qml textinput

我在IntValidator内有一些TextInput s,它们都表现良好,除了一个。一个行为不端是唯一一个将bottom属性设置为大于零的东西。使用下面的代码(Qt 5.2.0)很容易产生问题:

import QtQuick 2.1

Rectangle
{
    id:         mainwindow
    objectName: "mainwindow"
    width:      1024
    height:     768

    TextInput
    {
        id: testtextinput
        objectName: "testtextinput"

        text: "170"
        font.pixelSize: 36

        x: 100
        y: 200
        width: 200
        height: 200

        property size range: Qt.size(160, 180)
        validator: IntValidator
        {
            id:     rangevalidator
            objectName: testtextinput.objectName + "_rangevalidator"

            bottom: testtextinput.range.width
            top:    testtextinput.range.height

            Component.onCompleted:
            {
                console.log("Component.onCompleted objectName: " + objectName + " bottom: " + bottom + " top: " + top)
            }
        }
        onAccepted:
        {
            text = "accepted"
        }
    }
    Text
    {
        id: testisacceptable

        font.pixelSize: 36
        text: testtextinput.acceptableInput

        anchors.top: testtextinput.bottom
        anchors.left: testtextinput.left
        anchors.right: testtextinput.right
        height: 200
    }
}

验证器的范围设置为[ 160 180 ],因此,如果我要输入 181 ,我只需输入 18 即可。但是,如果我要输入 159 TextInput 可以让我写下整个数字,告诉我这个数字不会被接受设置为 false acceptableInput属性,但是当我按回车键时,onAccepted()插槽执行没有问题。关于这里发生了什么的任何想法?一个错误?

1 个答案:

答案 0 :(得分:0)

此错误已在 Qt 5.3.0 中解决,如here所述。