我有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
}
答案 0 :(得分:0)
当用户点击退格
时
你的意思是只是按下退格键?那就是这样的:
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
答案 1 :(得分:0)
实际上,您可以使用TextInput的 displayText 功能,例如:
TextInput {
id: textInput
inputMask: "00:00:00;0"
onDisplayTextChanged: {
// when user backspacing or deleting some character,
// this property become as visible value: "03:01:35"
// but text property has value: "03:1:35"
console.log(displayText);
}
}