keyPressEvent没有反应

时间:2014-03-04 10:24:55

标签: c++ qt events opengl

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

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();
}

1 个答案:

答案 0 :(得分:5)

确保MainWindow通过设置

接受Focus

QWidget::setFocusPolicy()

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