У меня есть приложение GUI GUI. Главное окно содержит компонент QtQuick, который размещен на нем с помощью окна контейнера:QtQuick ключевое событие распространения пресса
QQuickView * view = new QQuickView();
QWidget * container = QWidget::createWindowContainer (view, this);
я хотел бы, чтобы обрабатывать все события нажатия клавиш под всем окном. Но я столкнулся с проблемой, что я не могу обрабатывать ключевые события, когда фокус, полученный компонентом QtQuick, даже если я установил для него окно как родительское.
documentation сказать, что такое поведение, как ожидается:
QWidget * QWidget :: createWindowContainer (QWindow * окно, QWidget * Родитель => Q_NULLPTR, Qt :: WindowFlags флаги = Qt :: WindowFlags())
...
контейнер окно имеет ряд известных ограничений:
...
обработка фокуса; Можно предоставить экземпляру контейнера окна какую-либо политику фокуса, и он делегирует фокус на окно через вызов QWindow :: requestActivate(). Однако возврат к нормальной цепочке фокуса из экземпляра QWindow будет выполняться непосредственно над реализацией экземпляра QWindow. Например, при входе в окно Qt Quick based с фокусом вкладки вполне вероятно, что дальнейшие нажатия клавиш будут циклироваться только внутри приложения QML. Кроме того, QWindow :: requestActivate() фактически дает фокус окна, зависит от платформы.
Мой вопрос: есть ли способ обрабатывать событие нажатия клавиш под всем окном, даже если фокус приобретается компонентом QtQuick?
Минимальный и полный пример доступен по адресу GitLab.