使OpenGL代码适应Qt(特别是keyPressEvent)

时间:2011-08-10 11:48:36

标签: c++ qt opengl

我在OpenGL中有一个工作程序,现在可以在Qt下工作。有些事情有点不同,我现在正在努力使用keypressevent-function。我有一个全局变量,应该通过按键来改变(稍后通过按下按钮)。

int modus = -1;

void GLWidget::keyPressEvent(QKeyEvent* event)
{
    switch (event->key())
    {
    case Qt::Key_F2 :
        modus = 1;
        updateGL();
        break; 
    default:
        break;
    }
}

此更改变量应在mousePressEvent()

中使用
void GLWidget::mousePressEvent(QMouseEvent* e)
{
    if (modus == 1 && (e->buttons() & Qt::LeftButton))
    {
        counter++;
        p_list[counter].x = mx - width1/2;                                  
        p_list[counter].y = my - height1/2;                 
        glPointSize(5);
        glColor3d(1, 0, 0);
        updateGL();
    }
}

1 个答案:

答案 0 :(得分:1)

你不是在使用Qt的QGLWidget课吗?

如果你的OpenGL类基于QGLWidget,你可以这样做:

class QtGLStuff: public QGLWidget
{
    Q_OBJECT

public:
                    QtGLStuff();

    virtual void    keyPressEvent( QKeyEvent* );
    virtual void    mousePressEvent( QMouseEvent* );

private:
    int     mModus;
};

然后modus(我将其重命名为mModus以指定它是一个成员数据)只是成为您的类共享方法的数据,而不是全局变量。