在QML中使用InputMask

时间:2013-12-10 08:22:17

标签: qml

我有一个小显示窗口,它应该包含一个像“0000.00”这样的InputMask。单击从0到9的数字按钮时,显示屏应显示相应的数字,例如:0345.89 这是我的代码:

TextInput {
    id: displayNumbers6Text
    cursorVisible: true
    focus: true
    validator: RegExpValidator {
        regExp: /[0-9]+/
    }
    inputMask: "0000.00"
    maximumLength: 7
}

对于按钮:

Button {
     width: parent.width*0.3
     height: parent.height*0.15
     buttonColor: "#000000"
     MouseArea {
          anchors.fill: parent
          onClicked: {
                displayNumbers6Text.text = "1"
          }
     }
}

但它不起作用。我做错了什么?

1 个答案:

答案 0 :(得分:1)

分配text属性时,将此值重置为“1”。 如果您尝试的是在单击按钮时插入值,则可以尝试:

import QtQuick 2.0

Rectangle {
    width: 360
    height: 200 

    TextInput {
        id: displayNumbers6Text
        width: parent.width
        height: parent.height * 0.5

        cursorVisible: true
        focus: true
        validator: DoubleValidator {
        }
        inputMask: "0000.00"
        maximumLength: 7

        function appendNum(num) {
            var dotPos = text.indexOf(".");
            if (dotPos == 4)
                text += num;
            else
                text = text.substr(0, dotPos) + num + text.substr(dotPos);
        }
    }

    Rectangle {
        width: parent.width*0.3
        height: parent.height*0.15
        anchors.top: displayNumbers6Text.bottom
        color: "black"
        MouseArea {
            anchors.fill: parent
            onClicked: {
                console.log(displayNumbers6Text.text);
                displayNumbers6Text.appendNum("1");
            }
        }
    }
}
  • 您可以使用DoubleValidator而不是一般的RegexValidator,它会更具可读性。
  • 我向TextInput添加了一个appendNum函数,以在文本字符串的末尾插入一个值。请注意,由于您设置的inputMask
  • ,点字符始终位于字符串中