Reputation: 5175
I have a QtQuick project for Desktop. It is very simple:
// import QtQuick 1.0 // to target S60 5th Edition or Maemo 5
import QtQuick 1.1
Rectangle {
width: 360
height: 360
Grid
{
id: xGrid
width: parent.width
height: parent.height
columns: 2
spacing: 1
Rectangle
{
height: parent.height
width: 10
color: "#ff0000"
Text {
id: xText
text: qsTr("t\na\ns")
}
}
TextEdit
{
id: xTextEdit
height: parent.height
width: 350
Keys.onEnterPressed: {
console.log(event.key)
xText.text = (qsTr("A"))
}
}
}
}
My code does not run like I want. The Keys.onEnterPressed
seem never be captured, so I try Keys.onPressed
it work but not sure why when I press Enter, the even.key
returns 16777220.
Any one get this issue? How can I solve it?
Thanks for your answer!
Upvotes: 28
Views: 28604
Reputation: 2753
A better way to handle users entering a text value is to use TextInput.onAccepted
Here's an example:
TextInput {
onAccepted: processText()
}
When the user presses Enter, the processText() method will be called. This approach is simpler and should improve cross-platform portability.
Upvotes: 6
Reputation: 3592
TextArea {
id: messageField
Layout.fillWidth: true
placeholderText: qsTr("Message")
wrapMode: TextArea.Wrap
inputMethodHints: Qt.ImhNoPredictiveText
function _onEnterPressed(event)
{
if ((event.modifiers & Qt.ControlModifier))
{
sendMessage()
}
else
{
event.accepted = false;
}
}
Keys.onReturnPressed: { _onEnterPressed(event) }
Keys.onEnterPressed: { _onEnterPressed(event) }
}
Upvotes: 4
Reputation: 16091
Potentially relevant context taken from the docs:
[...] the order of key event processing is:
- Items specified in forwardTo
- specific key handlers, e.g. onReturnPressed
- onPressed, onReleased handlers
- Item specific key handling, e.g. TextInput key handling
- parent item
Upvotes: 0
Reputation: 481
I got the same problem with a TextInput
item. I tried
onPressed
onEnterPressed
onReturnPressed
Only the latter one worked (onReturnPressed
). I guess, the underlying implementation of the TextInput
captures the 'Enter' key so it doesn't get processed by the onPressed
signal in a regular way.
By the way: the key code is correct. It's an abstraction on the platform specific key codes.
Upvotes: 30
Reputation: 36
I'd say use onReturnPressed as well. Otherwise you can also check the key value in onPressed() and react there. onReturn/EnterPressed are just convenience functions.
Upvotes: 0