【问题标题】:Can't capture QkeyEvent in QopenGLWidget无法在 QopenGLWidget 中捕获 QkeyEvent
【发布时间】:2016-02-06 20:10:32
【问题描述】:

当我将QKeyEvent 用作...小部件时,我遇到了在QOpenGLWidget 中捕获QKeyEvent 的问题。如果我将QOpenGLWidget 用作主窗口,但如果小部件是另一个主窗口的子窗口,则效果很好......(什么都没有发生)

也许我搞砸了 Qt 小部件的工作原理,但我无法弄清楚。

谢谢

【问题讨论】:

  • 我也有两个想法:

标签: c++ qt opengl


【解决方案1】:

尝试拨打yourGLWidget->setFocusPolicy (Qt::StrongFocus);

来自http://doc.qt.io/qt-5/qwidget.html#focusPolicy-prop“如果小部件处理键盘事件,您必须为它启用键盘焦点。这通常在小部件的构造函数中完成。”

【讨论】:

  • 它通过从构造函数中设置来工作。顺便说一句,当我尝试从窗口设计器设置它时它不会......没关系。谢谢。
【解决方案2】:

我猜你的 mainWindow 要么处理 QKeyEvent(也许它是一个已经映射的组合键),要么阻止转发到你的自定义小部件组件。当用作“QWidget”时,会应用特殊规则,您需要覆盖其他一些处理程序以使您的处理程序能够发生。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 2018-12-28
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多