Адаптировать код OpenGL к Qt (особенно keyPressEvent) - PullRequest
1 голос
/ 10 августа 2011

У меня есть рабочая программа в OpenGL, которая теперь будет работать под Qt. Некоторые вещи немного отличаются, и я сейчас борюсь с функцией 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();
    }
}

1 Ответ

1 голос
/ 14 августа 2011

Разве вы не используете класс Qt QGLWidget ?

Если вы основываете свой класс OpenGL на QGLWidget, вы можете сделать что-то вроде этого:

class QtGLStuff: public QGLWidget
{
    Q_OBJECT

public:
                    QtGLStuff();

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

private:
    int     mModus;
};

Тогда modus (который я переименовал в mModus, чтобы обозначить, что это элемент данных) просто становится данными, которые разделяют методы вашего класса, а не глобальной переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...