Я хочу обработать два ключевых события Ctrl
+Tab
и Ctrl
+Shift
+Tab
, чтобы переключаться между вкладками в моем приложении ("вперед" и "назад" соответственно). Однако, похоже, это работает не так, как ожидалось.
Это мой текущий код (минимальный пример):
import QtQuick 1.1
Item {
width: 100
height: 100
focus: true
Keys.onPressed: {
if(event.modifiers & Qt.ControlModifier) {
if(event.key === Qt.Key_Tab) {
if(event.modifiers & Qt.ShiftModifier)
console.log('backward')
else
console.log('forward')
}
}
}
}
Я запустил этот фрагмент кода с qmlviewer
(версия Qt 4.8.2)
Вывод при нажатии Ctrl
+Tab
:
forward
forward
Вывод при нажатии Ctrl
+Shift
+Tab
:
нет
Итак, я вижу две ошибки: первая последовательность клавиш обрабатывается дважды, а другая - нет.
- EDIT: Причина, по которой другой вообще не обрабатывается, устранена, см. комментарии.
Почему это происходит и как я могу это решить?
Примечание. Я уже использую Qt Components for Desktop в своем приложении, так что ничего страшного, если вы знаете решение, требующее этого модуля.
event.modifiers && Qt.ControlModifier
должно бытьevent.modifiers == Qt.ControlModifier
. В противном случае вторые ключевые события будут работать в сочетании с любымиevent.modifiers
23.12.2014