Qt QML TextInput忽略InputMethodHipts

Qt QML TextInput忽略InputMethodHipts,qt,qml,Qt,Qml,我正在QML中创建自定义文本输入。它的一个配置是,它是一个只能接受数字的字段。我是这样做的: import QtQuick 2.6 Item { property string vmFont: "Mono" property string vmPlaceHolder: "Some text ..." property bool vmNumbersOnly: false // Qt Quick approach to make internal variabl

我正在QML中创建自定义文本输入。它的一个配置是,它是一个只能接受数字的字段。我是这样做的:

import QtQuick 2.6

Item {

    property string vmFont: "Mono"
    property string vmPlaceHolder: "Some text ..."
    property bool vmNumbersOnly: false

    // Qt Quick approach to make internal variables.
    Item {
        id: own
        property string enteredText: ""
    }

    Rectangle {
        id: lineEditRect
        anchors.fill: parent
        color: "#e4f1fd"
        radius: 2
    }

    TextInput {
        id: lineEdit
        text: vmPlaceHolder
        color: "#5499d5"
        font.family: vmFont
        font.pixelSize: 13
        anchors.bottom: parent.bottom
        //inputMethodHints: vmNumbersOnly ? Qt.ImhDigitsOnly : Qt.ImhNone
        inputMethodHints: Qt.ImhDigitsOnly
        verticalAlignment: TextInput.AlignVCenter
        leftPadding: 10
        width: lineEditRect.width
        height: lineEditRect.height
        onActiveFocusChanged: {
            if (activeFocus){
                if (own.enteredText === ""){
                    // Removing the placeholder
                    lineEdit.text = "";
                }
            }
        }

        onEditingFinished: {
            own.enteredText = lineEdit.text;
            if (lineEdit.text === ""){
                lineEdit.text = vmPlaceHolder
            }
        }
    }

}

但是,即使inputMethodHits设置为Qt.ImhDigitsOnly,文本输入仍然接受各种按键。我做错了什么?

我认为
InputMethodHitts
适用于虚拟键盘(如手机软件键盘、Qt虚拟键盘等)。为了在使用物理键盘时限制输入(尽管在使用虚拟键盘时也可以使用),可以使用和。例如,以下代码只允许输入0到9之间的四位数字:

TextInput {
    inputMask: "9999"
}

inputMethodHits
视为影响虚拟键盘的显示内容和行为方式,将这些属性视为影响
TextInput
本身允许作为输入的内容。

我认为
inputMethodHits
适用于虚拟键盘(如手机软件键盘、Qt虚拟键盘等)。为了在使用物理键盘时限制输入(尽管在使用虚拟键盘时也可以使用),可以使用和。例如,以下代码只允许输入0到9之间的四位数字:

TextInput {
    inputMask: "9999"
}

inputMethodHits
视为影响虚拟键盘的显示内容及其行为,将这些属性视为影响
TextInput
本身允许作为输入的内容。

它在任何设备中都适用:

TextInput {
    validator: RegExpValidator{regExp: /[0-9]+/}
}

它在任何设备上对我都有效:

TextInput {
    validator: RegExpValidator{regExp: /[0-9]+/}
}

我尝试使用输入掩码,但它不允许我输入任何文本。所以我放弃了,并尝试在onFinishedEdited事件中解析int,因为我已经有了该条件的代码。谢谢你有没有试过用一个?例如:
validator:IntValidator{}
我尝试使用输入掩码,但它不允许我输入任何文本。所以我放弃了,并尝试在onFinishedEdited事件中解析int,因为我已经有了该条件的代码。谢谢你有没有试过用一个?例如:
validator:IntValidator{}
当回答一个老问题时,如果您包含一些上下文来解释您的答案是如何帮助的,那么您的答案对其他StackOverflow用户会更有用。请参阅:。这将适用于正整数。我不接受小数或一般数字当回答一个老问题时,如果你加入一些上下文来解释你的答案是如何有帮助的,你的答案对其他StackOverflow用户会更有用。请参阅:。这将适用于正整数。我不接受小数或整数