Название: Работа с таймером
Отправлено: papos от Ноябрь 14, 2010, 13:32
Добрый день. Необходимо сделать так, чтобы после срабатывания таймера через каждую секунду выполнялось некое действие. У меня есть свой класс, наследуемый от QGLWidget. Почему-то таймер не срабаывает. Подскажите пожалуйста, почему: #ifndef MYGLWIDGET_H #define MYGLWIDGET_H
#include <QGLWidget> #include <QTimer>
class MyGLWidget : public QGLWidget { Q_OBJECT public: MyGLWidget();
private: GLfloat iVertex[2][2]; //вектор координат луча double alpha; //угол поворота луча радара int intR; //радиус луча радара QTimer turnTimer; //таймер для поворота луча радара
protected: virtual void paintGL(); virtual void initializeGL(); virtual void resizeGL(int nWidth,int nHeight); virtual void keyPressEvent(QKeyEvent* e); void UpdateImage();
};
#endif // MYGLWIDGET_H
#include "myglwidget.h" #include <QKeyEvent> #include <math.h> #include <QMessageBox> #include <QString>
MyGLWidget::MyGLWidget() { alpha=90; intR=50; connect(&turnTimer, SIGNAL(timeout()), this, SLOT(updateImage())); turnTimer.start(100); }
void MyGLWidget::paintGL() { glClear(GL_COLOR_BUFFER_BIT);
glLineWidth(2.0); glColor3f(1.0,0,0);
glBegin(GL_LINES);
glVertex2fv(iVertex[0]); glVertex2fv(iVertex[1]);
glEnd(); }
void MyGLWidget::initializeGL() { qglClearColor(Qt::black);
iVertex[0][0]=50; iVertex[0][1]=50; iVertex[1][0]=50; iVertex[1][1]=100; }
void MyGLWidget::resizeGL(int nWidth,int nHeight) { glViewport(0,0,(GLint)nWidth,(GLint)nHeight); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0,100,0,100,0,100); glMatrixMode(GL_MODELVIEW); glLoadIdentity();
}
void MyGLWidget::UpdateImage() { QMessageBox::information(this, "OK","OK", QMessageBox::Yes); alpha+=90; iVertex[1][0]=intR*cos(alpha*3.14/180)+50; iVertex[1][1]=intR*sin(alpha*3.14/180)+50; updateGL(); }
Название: Re: Работа с таймером
Отправлено: papos от Ноябрь 15, 2010, 15:37
up! help me plz ???
Название: Re: Работа с таймером
Отправлено: SimpleSunny от Ноябрь 15, 2010, 15:42
Во первых void UpdateImage(); не слот protected slots: void UpdateImage();
Во вторых в конекте неправильно указано имя connect(&turnTimer, SIGNAL(timeout()), this, SLOT(UpdateImage()));
|