Qml TextEdit Пользовательское ключевое событие не обработано должным образом

#qt #qml

Вопрос:

Я хотел добавить пользовательские ключевые события в a TextEdit . Но, похоже, ключевые события не обрабатываются должным образом внутри TextEdit .

Например, в приведенном ниже коде я пытаюсь обработать Space ключевые события. Хотя Space нажатие клавиши распознается функцией обработчика сигналов, выходной текст не содержит пробела. То же самое относится и ко всем другим ключевым событиям. Как мне преодолеть это?

 import QtQuick 2.15
import QtQuick.Controls 2.15

Item{

    function processSpace(event){
        event.accepted = true
        console.log(xTextEdit.text)
    }

    TextEdit{
        id: xTextEdit
        height: parent.height
        width: parent.width
        Keys.onSpacePressed: processSpace(event)
    }
}
 

Комментарии:

1. Вы принимаете событие, тем самым предотвращая обработку по умолчанию. Попробуйте event.accepted = false вместо этого установить

2. @king_nak, почему ты не поставил это в качестве ответа? Спасибо

3. Я не был уверен, что это работает, и у меня не было времени проверить это самостоятельно. Но поставьте это в качестве ответа сейчас

Ответ №1:

Вы принимаете событие и, таким образом, предотвращаете обработку по умолчанию.

Установите event.accepted = false вместо этого, чтобы событие распространялось.

Обратите внимание, что по умолчанию принято true (по крайней мере, для ключевых событий), поэтому, если его не установить, событие будет принято