我正在用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,文本输入仍然接受所有类型的按键。我做错了什么?
发布于 2018-05-27 18:44:03
发布于 2020-02-04 15:45:46
它在任何设备上都适用:
TextInput {
validator: RegExpValidator{regExp: /[0-9]+/}
}https://stackoverflow.com/questions/50551251
复制相似问题