regex - QML 中时间输入的文本字段验证

标签 regex qt qml textfield qtquickcontrols2

我有一个TextField,它允许用户输入时间,并且我已使用 RegValidator 进行验证。目前,我需要在用户单击退格键后立即用 "0" 填充特定位置。代码如下:

TextField {
    id:textField
    text:"11:11:11"
    width:200
    height:80
    font.pointSize: 15
    color:"white"
    inputMask: "99:99:99"
    validator: RegExpValidator { regExp: /^([0-1\s]?[0-9\s]|2[0-3\s]):([0-5\s][0-9\s]):([0-5\s][0-9\s])$ / }
    horizontalAlignment: Text.AlignHCenter
    verticalAlignment: Text.AlignVCenter
    inputMethodHints: Qt.ImhDigitsOnly
}

最佳答案

when user clicks on backspace

你的意思是只按退格键?那么它会是这样的:

TextField {
    ..
    Keys.onBackPressed: text = "00:00:00"
}

编辑

为了仅重置光标所在的数字之一,您可以执行如下操作。我没有测试它,也许有些索引是错误的,但你明白了

TextField {
    ..
    Keys.onBackPressed: {
        var index = cursorPosition
        var char = text.charAt(index)
        if(char != ":"){
            text = text.substr(0, index) + "0"+ text.substr(index);
        }

    }
}

http://doc.qt.io/qt-5/qml-qtquick-controls-textfield.html#cursorPosition-prop

关于regex - QML 中时间输入的文本字段验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47452800/

相关文章:

regex - 高级 Lua 模式匹配

regex - 为什么 grep 不匹配 "\<\-v\>"

css - 为什么 padding-left 样式会导致 QComboBox 菜单拉伸(stretch)到屏幕高度?

qt - 如图所示,如何在QGridLayout中排列项目?

ios - ApplicationWindow不遵守大小

qt - 如何在QML中选择不同的键盘类型?

Javascript - 正则表达式 - 用不同的字符串替换字符串中的所有其他匹配项

qt - 如何在通过 QTestLib 对 Qt 应用程序进行单元测试时构建项目

c++ - 为什么QTextDocument背景颜色仅更改一次?

C++ 正则表达式替换第一个匹配项