class OGLForm : public QGLWidget
{
public:
explicit OGLForm(QWidget *parent,int scrn_size_x, int scrn_size_y);
void draw(int x, int y, GLenum type);
float ball_posx;
float ball_posy;
int ball_r;
int ssx;
int ssy;
QTimer* time1;
QPoint mouse_point;
GLuint nomer_disp_spiska_objectov;
protected:
virtual void initializeGL();
virtual void resizeGL(int w, int h);
virtual void paintGL();
//virtual void mousePressEvent(QMouseEvent * pe);
virtual void mouseMoveEvent(QMouseEvent * pe);
public slots:
void alarm();
};
Qt connect
Код:
конструктор и слот:
Код:
OGLForm::OGLForm(QWidget *parent, int scrn_size_x, int scrn_size_y) :
QGLWidget(parent)
{
time1 = new QTimer;
ssx=scrn_size_x;
ssy=scrn_size_y;
ball_posx=ssx/2;
ball_r=20;
ball_posy=ssy-ball_r;
QObject::connect(time1, SIGNAL(QTimer::timeout()),this,SLOT(alarm()));
time1->start(500);
}
QGLWidget(parent)
{
time1 = new QTimer;
ssx=scrn_size_x;
ssy=scrn_size_y;
ball_posx=ssx/2;
ball_r=20;
ball_posy=ssy-ball_r;
QObject::connect(time1, SIGNAL(QTimer::timeout()),this,SLOT(alarm()));
time1->start(500);
}
Код:
void OGLForm::mouseMoveEvent(QMouseEvent *pe)
{
mouse_point=pe->pos();
}
void OGLForm::alarm()
{
ball_posx=mouse_point.x();
ball_posy=mouse_point.y();
updateGL();
}
{
mouse_point=pe->pos();
}
void OGLForm::alarm()
{
ball_posx=mouse_point.x();
ball_posy=mouse_point.y();
updateGL();
}
Почему может connect не срабатывать? Возвращает false. Пробовал уже по-разному параметры передавать - и с оператором расширения видимости, и без него. Не срабатывает alarm. Таймер создаётся. Qt 4.7.4
Если вы продебажите connect все станет понятным. Я так выяснил причины своего неконнекта.
Починилось всё убиранием оператора расширения видимости из
Цитата:
QObject::connect(time1, SIGNAL([COLOR="mediumturquoise"]QTimer::[/COLOR]timeout()),this,SLOT(alarm()));
А потом:
Цитата:
Object::connect: No such slot QGLWidget::alarm() in oglform.cpp:13
Почему-то слот ищется не в моём классе. Как это можно поправить?
UPD: Всё починил. Нужен был макрос Q_OBJECT, от которого я избавился из-за ошибок сборки, потому что не линковались moc файлы, потому что в *.pro прописал TARGET отличный от каталога с moc'овским объектным. Вот так вот...