我在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();
}
}
最佳答案
您不使用Qt的QGLWidget类吗?
如果您的OpenGL类基于QGLWidget,则可以执行以下操作:
class QtGLStuff: public QGLWidget
{
Q_OBJECT
public:
QtGLStuff();
virtual void keyPressEvent( QKeyEvent* );
virtual void mousePressEvent( QMouseEvent* );
private:
int mModus;
};
然后,方式(我将其重命名为mModus来指定它是一个成员数据)只是变成了您的类的方法共享的数据,而不是全局变量。