C++ 使OpenGL代码适应Qt(特别是按键事件)

C++ 使OpenGL代码适应Qt(特别是按键事件),c++,qt,opengl,C++,Qt,Opengl,我有一个OpenGL的工作程序,现在可以在Qt下工作。有些事情有点不同,我现在正在努力使用keypressevent功能。我有一个全局变量,应该通过按键(稍后按下按钮)进行更改 此更改的变量应在mousePressEvent()中使用 你不是在使用Qt的类吗 如果您的OpenGL类基于QGLWidget,您可以执行以下操作: class QtGLStuff: public QGLWidget { Q_OBJECT public: QtGLStuf

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

此更改的变量应在mousePressEvent()中使用

你不是在使用Qt的类吗

如果您的OpenGL类基于QGLWidget,您可以执行以下操作:

class QtGLStuff: public QGLWidget
{
    Q_OBJECT

public:
                    QtGLStuff();

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

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

您不是在使用Qt的类吗

如果您的OpenGL类基于QGLWidget,您可以执行以下操作:

class QtGLStuff: public QGLWidget
{
    Q_OBJECT

public:
                    QtGLStuff();

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

private:
    int     mModus;
};

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

OpenGL不做输入。您真正转换的GUI框架是什么?顺便说一句,不要直接调用
updateGL
,只需像调用任何其他
QWidget
一样调用
update
。他想绑定OpenGL for 3D和Qt进行输入处理。你关于“modus”的想法完全是错误的。检查此时是否有任何按键被按下的功能。如果必须,也可以在继承QGLWidget的类中放置int modus。OpenGL不进行输入。您真正转换的GUI框架是什么?顺便说一句,不要直接调用
updateGL
,只需像调用任何其他
QWidget
一样调用
update
。他想绑定OpenGL for 3D和Qt进行输入处理。你关于“modus”的想法完全是错误的。检查此时是否有任何按键被按下的功能。如果必须,也可以在继承QGLWidget的类中放置int modus。
class QtGLStuff: public QGLWidget
{
    Q_OBJECT

public:
                    QtGLStuff();

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

private:
    int     mModus;
};