2011-08-10 3 views
1

OpenGL에서 현재 Qt에서 작동하는 작동 프로그램이 있습니다. 어떤 것들은 조금 다르며 지금 keypressevent-function으로 고심하고 있습니다. 키를 눌러 변경해야하는 전역 변수가 있습니다 (나중에 버튼을 표시하여 변경). OpenGL 코드를 Qt (특히 keyPressEvent)에 맞 춥니 다

int modus = -1; 

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

이 변경된 변수

는 Qt의 QGLWidget 클래스를 사용하지 않는()

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

OpenGL은 입력을하지 않습니다. 어떤 GUI 프레임 워크가 실제로 변환되고 있습니까? – genpfault

+2

무엇이 당신의 질문입니까? –

+0

덧붙여서,'updateGL'를 직접 호출하지 말아주세요. 다른'QWidget'와 같이'update'를 호출하면됩니다. –

답변

1

가 있습니까 mousePressEvent에 사용되어야 하는가? 당신이 QGLWidget에 OpenGL을 클래스를 기반으로하는 경우

, 당신은 같은 것을 할 수 있습니다

class QtGLStuff: public QGLWidget 
{ 
    Q_OBJECT 

public: 
        QtGLStuff(); 

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

private: 
    int  mModus; 
}; 

그런 작업 방식을 (나는 그것이 구성원 데이텀가 있다고 지정 mModus 이름을 변경하는) 단순히 데이터가된다 그 방법 당신의 클래스 변수는 전역 변수가 아닌 클래스 공유입니다.

관련 문제