Russian Qt Forum
Сентябрь 30, 2024, 12:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Работа с таймером  (Прочитано 2785 раз)
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();
}
Записан
papos
Гость
« Ответ #1 : Ноябрь 15, 2010, 15:37 »

up! help me plz  Непонимающий
Записан
SimpleSunny
Гость
« Ответ #2 : Ноябрь 15, 2010, 15:42 »

Во первых void UpdateImage(); не слот
protected slots:
void UpdateImage();

Во вторых в конекте неправильно указано имя
connect(&turnTimer, SIGNAL(timeout()), this, SLOT(UpdateImage()));
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.043 секунд. Запросов: 20.