我有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。