QML Keys.onEnterPressed问题

nvc*_*nvn 17 qt event-handling qml qt-quick

我有一个桌面的QtQuick项目.这很简单:

// 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"))
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的代码没有像我想的那样运行.在Keys.onEnterPressed似乎从来没有被捕获,所以我尝试Keys.onPressed它的工作,但不知道为什么,当我按下Enter,则even.key返回16777220.

有谁得到这个问题?我该如何解决?
感谢您的回答!

小智 18

我对一个TextInput项目有同样的问题.我试过了

  • onPressed
  • onEnterPressed
  • onReturnPressed

只有后一个工作(onReturnPressed).我想,TextInput捕获"Enter"键的底层实现使得它不会被onPressed常规方式的信号处理.

顺便说一下:关键代码是正确的.它是平台特定密钥代码的抽象.

  • @drzymala Keys.onEnterPressed 当您按下键盘右侧的数字小键盘*的回车键时,应该调用 @drzymala Keys.onEnterPressed 。这就是这个的用途。 (2认同)

Pau*_*ntz 5

处理用户输入文本值的更好方法是使用 TextInput.onAccepted

下面是一个例子:

TextInput {
    onAccepted: processText()
}
Run Code Online (Sandbox Code Playgroud)

当用户按下 Enter 键时,将调用 processText() 方法。这种方法更简单,应该可以提高跨平台的可移植性。