26

我有一个用于桌面的 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"))
            }
        }
    }
}

我的代码没有像我想要的那样运行。Keys.onEnterPressed似乎永远不会被捕获,所以我尝试它Keys.onPressed工作但不知道为什么当我按下时Entereven.key返回 16777220。

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

4

5 回答 5

28

我在一个TextInput项目上遇到了同样的问题。我试过

  • onPressed
  • onEnterPressed
  • onReturnPressed

只有后一种有效(onReturnPressed)。我猜想,捕获的底层实现会TextInput捕获“Enter”键,因此信号不会onPressed以常规方式对其进行处理。

顺便说一句:关键代码是正确的。它是平台特定键码的抽象。

于 2012-09-13T12:04:25.633 回答
5

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

这是一个例子:

TextInput {
    onAccepted: processText()
}

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

于 2018-01-03T21:52:18.257 回答
4
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) }
}
于 2017-07-21T10:16:54.897 回答
0

我会说也使用 onReturnPressed 。否则,您还可以检查 onPressed() 中的键值并在那里做出反应。onReturn/EnterPressed 只是便利功能。

于 2012-04-02T08:48:39.250 回答
0

文档中获取的潜在相关上下文:

[...] 关键事件处理的顺序是:

  1. forwardTo 中指定的项目
  2. 特定的键处理程序,例如 onReturnPressed
  3. onPressed, onReleased 处理程序
  4. 项目特定键处理,例如 TextInput 键处理
  5. 父项
于 2016-02-09T13:59:31.877 回答