我在 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 吗?类(class)?
如果您的 OpenGL 类基于 QGLWidget,您可以这样做:
class QtGLStuff: public QGLWidget
{
Q_OBJECT
public:
QtGLStuff();
virtual void keyPressEvent( QKeyEvent* );
virtual void mousePressEvent( QMouseEvent* );
private:
int mModus;
};
然后 modus(我将其重命名为 mModus 以指定它是一个成员数据)只是成为您的类的方法共享的数据,而不是全局变量。
关于c++ - 使 OpenGL 代码适应 Qt(特别是 keyPressEvent),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7013186/