#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
(по крайней мере, для ключевых событий), поэтому, если его не установить, событие будет принято