首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QML TextInput忽略inputMethodHints

QML TextInput忽略inputMethodHints
EN

Stack Overflow用户
提问于 2018-05-27 18:32:18
回答 2查看 2K关注 0票数 0

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

代码语言:javascript
复制
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,文本输入仍然接受所有类型的按键。我做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2018-05-27 18:44:03

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

代码语言:javascript
复制
TextInput {
    inputMask: "9999"
}

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

票数 2
EN

Stack Overflow用户

发布于 2020-02-04 15:45:46

它在任何设备上都适用:

代码语言:javascript
复制
TextInput {
    validator: RegExpValidator{regExp: /[0-9]+/}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50551251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档