【问题标题】:keyPressEvent no reactionkeyPressEvent 无反应
【发布时间】:2014-03-04 10:24:55
【问题描述】:

我正在写 QT。 OpenGL 已连接,工作正常,但是 mousePressEvent 事件和 keyPressEvent 不响应击键。

class MainWindow : public QGLWidget
{
    Q_OBJECT
    protected:
        void initializeGL(); // Метод для инициализирования opengl
        void resizeGL(int nWidth, int nHeight); // Метод вызываемый после каждого изменения размера окна
        void paintGL(); // Метод для вывода изображения на экран
        void paintSun();
        void mousePressEvent(QMouseEvent *mouse);
        void keyPressEvent(QKeyEvent *ke);
public:
    MainWindow(int x, int y,QWidget *parent = 0);
    ~MainWindow();
};

void MainWindow::keyPressEvent(QKeyEvent *ke)
{
    switch (ke->key())
    {
          case Qt::Key_Space://NO REACTION
                View += 1;
                glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
                paintPlanet();
                break;
    }
    updateGL();
}

【问题讨论】:

  • 您的QGLWidget 是复杂布局的一部分吗?
  • 不,我有它是示例 qt progect
  • 是否触发了keyPressEvent?你可以在调试器中检查它吗?

标签: c++ qt events opengl


【解决方案1】:

确保 MainWindow 通过设置接受焦点

QWidget::setFocusPolicy()

您还应该调用 QWidget::keyPressEvent as stated here 的基本实现。是否有另一个 Widget 具有焦点且不通过 KeyEvent?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-14
    • 2011-02-13
    • 2014-08-10
    • 2017-02-14
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    相关资源
    最近更新 更多