2016-12-03 8 views
1

Как подключить функцию void update(*p_1, *p_2, *p_3, *p_4, *scene) с помощью timer() с помощью QObject::connect?QObject :: connect timer with update() function

Что я хочу сделать, это обновить объекты, которым я передал указатели, и вызвать *scene->update() для обновления содержимого экрана.

У меня есть функция обновления, которая выглядит следующим образом:

void update(*p_1, *p_2, *p_3, *p_4, *scene){ 
    // update functions 
    scene->update(); 
} 

И главный у меня есть:

int main(int argc, char **argv){ 
    // creating objects and calculations 
    view.show(); 
    QTimer timer; 
    QObject::connect(&timer, SIGNAL(timeout()), update(&o_1, ..., &scene)); 
    timer.start(1000); 
    return a.exec(); 
} 
+0

Это, как это должно быть сделано: http://doc.qt.io/qt-5/qtwidgets-graphicsview-collidingmice- example.html # the-main-function – user5292408

ответ

1

сигнатуры сигнала и функции не совместимый. Потому что если это, согласно документации, вы не можете подключить их напрямую.
Во всяком случае, вы можете использовать лямбда, чтобы работать вокруг него:

QObject::connect(&timer, SIGNAL(timeout()), [&](){ update(&o_1, ..., &scene); }); 
+0

Проблема заключалась в том, что таймер и обновление не были частью класса. После создания соответствующего класса проблема исчезла. – user5292408