【发布时间】:2016-02-06 20:10:32
【问题描述】:
当我将QKeyEvent 用作...小部件时,我遇到了在QOpenGLWidget 中捕获QKeyEvent 的问题。如果我将QOpenGLWidget 用作主窗口,但如果小部件是另一个主窗口的子窗口,则效果很好......(什么都没有发生)
也许我搞砸了 Qt 小部件的工作原理,但我无法弄清楚。
谢谢
【问题讨论】:
-
我也有两个想法:
当我将QKeyEvent 用作...小部件时,我遇到了在QOpenGLWidget 中捕获QKeyEvent 的问题。如果我将QOpenGLWidget 用作主窗口,但如果小部件是另一个主窗口的子窗口,则效果很好......(什么都没有发生)
也许我搞砸了 Qt 小部件的工作原理,但我无法弄清楚。
谢谢
【问题讨论】:
尝试拨打yourGLWidget->setFocusPolicy (Qt::StrongFocus);
来自http://doc.qt.io/qt-5/qwidget.html#focusPolicy-prop:“如果小部件处理键盘事件,您必须为它启用键盘焦点。这通常在小部件的构造函数中完成。”
【讨论】:
我猜你的 mainWindow 要么处理 QKeyEvent(也许它是一个已经映射的组合键),要么阻止转发到你的自定义小部件组件。当用作“QWidget”时,会应用特殊规则,您需要覆盖其他一些处理程序以使您的处理程序能够发生。
【讨论】: