新的qml工程,发现所有的搜索输入框都没有添加回车事件,本着用户体验第一的原则,
随手进行了添加,响应回车事件直接进行搜索
一般qml常用文本输入控件有这几种:TextEdit、TextInput、TextField
实现方式一:
经过验证,都可以通过editFinished信号来触发,如TextField
TextField {
id: textField1
anchors.fill: parent
placeholderText: qsTr("请输入姓名、ID检索")
//enter/return to search
onEditingFinished: {
searchClicked(textField1.text);
}
}
实现方式二:
通过事件来处理,如同qwidget的键盘事件处理方式:
回车按键特殊,需要两个按键都做处理。
TextField {
id: textField1
anchors.fill: parent
placeholderText: qsTr("请输入姓名、ID检索")
//fixed-enter/return to search
//右下角的回车按键
Keys.onReturnPressed: {
strSeachInfo = textField1.text;
searchClicked(textField1.text);
}
//中间的回车按键
Keys.onEnterPressed: {
strSeachInfo = textField1.text;
searchClicked(textField1.text);
}
}
其他的按键响应一样的处理方式,参考放在最后:
实现方式三:
也可以接收所有键盘事件后,手动判断和处理感兴趣的按键事件:
TextField {
id: textField1
anchors.fill: parent
placeholderText: qsTr("请输入姓名、ID检索")
Keys.onPressed: {
if (event.key === Qt.Key_Enter || event.key === Qt.Key_Return)
searchClicked(textField1.text);
}
}
其他的按键信号:
asteriskPressed(event)
backPressed(event)
backtabPressed(event)
callPressed(event)
cancelPressed(event)
context1Pressed(event)
context2Pressed(event)
context3Pressed(event)
context4Pressed(event)
deletePressed(event)
digit0Pressed(event)
digit1Pressed(event)
digit2Pressed(event)
digit3Pressed(event)
digit4Pressed(event)
digit5Pressed(event)
digit6Pressed(event)
digit7Pressed(event)
digit8Pressed(event)
digit9Pressed(event)
downPressed(event)
enterPressed(event)
escapePressed(event)
flipPressed(event)
hangupPressed(event)
leftPressed(event)
menuPressed(event)
noPressed(event)
pressed(event)
released(event)
returnPressed(event)
rightPressed(event)
selectPressed(event)
shortcutOverride(event)
spacePressed(event)
tabPressed(event)
upPressed(event)
volumeDownPressed(event)
volumeUpPressed(event)
yesPressed(event)