无法在 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 上绘画

无法使用 QOpenGLWidget 读取 GL_DEPTH_COMPONENT

在QOpenGLWidget上使用Qt5小部件而不重写?

Qt QOpenGLWidget glClearColor 无法正常工作

QKE 全新升级丨多集群加持,打通容器混合云最后一公里

QOpenGLWidget 绘制对象