Qt QML TextInput忽略InputMethodHipts
我正在QML中创建自定义文本输入。它的一个配置是,它是一个只能接受数字的字段。我是这样做的: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
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用户会更有用。请参阅:。这将适用于正整数。我不接受小数或整数