无法在 QopenGLWidget 中捕获 QkeyEvent
Posted
技术标签:
【中文标题】无法在 QopenGLWidget 中捕获 QkeyEvent【英文标题】:Can't capture QkeyEvent in QopenGLWidget 【发布时间】:2016-02-06 20:10:32 【问题描述】:当我将QKeyEvent
用作...小部件时,我遇到了在QOpenGLWidget
中捕获QKeyEvent
的问题。如果我将QOpenGLWidget
用作主窗口,但如果小部件是另一个主窗口的子窗口,则效果很好......(什么都没有发生)
也许我搞砸了 Qt 小部件的工作原理,但我无法弄清楚。
谢谢
【问题讨论】:
我也有两个想法: 【参考方案1】:尝试拨打yourGLWidget->setFocusPolicy (Qt::StrongFocus);
来自http://doc.qt.io/qt-5/qwidget.html#focusPolicy-prop:“如果小部件处理键盘事件,您必须为它启用键盘焦点。这通常在小部件的构造函数中完成。”
【讨论】:
它通过从构造函数中设置来工作。顺便说一句,当我尝试从窗口设计器设置它时它不会......没关系。谢谢。【参考方案2】:我猜你的 mainWindow 要么处理 QKeyEvent(也许它是一个已经映射的组合键),要么阻止转发到你的自定义小部件组件。当用作“QWidget”时,会应用特殊规则,您需要覆盖其他一些处理程序以使您的处理程序能够发生。
【讨论】:
以上是关于无法在 QopenGLWidget 中捕获 QkeyEvent的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 QOpenGLWidget 读取 GL_DEPTH_COMPONENT