2016-12-03 2 views
1

Comment connecter la fonction void update(*p_1, *p_2, *p_3, *p_4, *scene) avec timer() en utilisant QObject::connect? Ce que je veux accomplir est de mettre à jour les objets auxquels j'ai passé les pointeurs et appeler le *scene->update() pour actualiser le contenu d'écran.QObject :: connect timer avec la fonction update()

J'ai une fonction de mise à jour qui ressemble à ceci:

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

Et principal que j'ai:

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

Voici comment il est censé faire: http://doc.qt.io/qt-5/qtwidgets-graphicsview-collidingmice- example.html # the-main-function – user5292408

Répondre

1

Les signatures du signal et de la fonction ne sont pas compatible. Parce que si cela, selon la documentation, vous ne pouvez pas les connecter directement.
Quoi qu'il en soit, vous pouvez utiliser un lambda pour contourner le il:

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

Le problème était que timer et update ne faisaient pas partie d'une classe. Après avoir créé la classe appropriée avec les deux problèmes avait disparu. – user5292408