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.key16777220 が返される理由がわかりません。

誰もこの問題を抱えていますか?どうすれば解決できますか?
ご回答有難うございます!

4

5 に答える 5

28

TextInputアイテムで同じ問題が発生しました。私は試した

  • onPressed
  • onEnterPressed
  • onReturnPressed

後者のみが機能しました(onReturnPressed)。TextInputの基本的な実装は「Enter」キーをキャプチャするためonPressed、通常の方法でシグナルによって処理されないと思います。

ちなみに、キーコードは正しいです。これは、プラットフォーム固有のキー コードの抽象化です。

于 2012-09-13T12:04:25.633 に答える
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 に答える