我有Qt 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的窗口时,很有可能只有在QML应用程序中循环进一步的标签按压。另外,QWindow :: requestActivate()实际上是否提供了窗口焦点,与平台相关。
我的问题是:即使通过QtQuick组件获得焦点,是否可以在整个窗口下处理按键事件?
最小和完整的示例可在GitLab。