2011-08-10 5 views
1

私はOpenGLで動作するプログラムを持っています。これはQtで動作するはずです。いくつかのことはちょっと違っていて、今私はkeypressevent-functionで苦労しています。私はキーを押して(後でボタンを押して)変更する必要があるグローバル変数を持っています。QtへのOpenGLコードの適合(特別にkeyPressEvent)

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

OpenGLは入力を行いません。あなたは本当に*どのGUIフレームワークから変換していますか? – genpfault

+2

あなたの質問は何ですか? –

+0

ところで、 'updateGL'を直接呼び出さないでください。他の' QWidget'と同じように 'update'を呼び出してください。 –

答えて

1

あなたはQtのQGLWidgetクラスを使用していませんか?

あなたがQGLWidget上のOpenGLのクラスをベースとした場合、あなたはこのような何かを行うことができます。

class QtGLStuff: public QGLWidget 
{ 
    Q_OBJECT 

public: 
        QtGLStuff(); 

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

private: 
    int  mModus; 
}; 

その後(私はそれがメンバーデータムだと指定するmModusに改称)手口は、単にそのあなたの方法でデータになりグローバル変数ではなく、クラス・シェアになります。

関連する問題