salut
j'ai une fonction qui deplace des disques d'un axe vers l'autre
elle a marche mais sans voir les deplacement
donc j'ai besoin d'une methode qui fait "pause" apres chaque deplacement (comme sleep à l'unix)
merci
Version imprimable
salut
j'ai une fonction qui deplace des disques d'un axe vers l'autre
elle a marche mais sans voir les deplacement
donc j'ai besoin d'une methode qui fait "pause" apres chaque deplacement (comme sleep à l'unix)
merci
Bonjour.
Pas trés claire ton expliquation...
De ce que j'ai compris, il te faudrait un QTimer qui à temps régulier va redessiner tes disques.
je programme avec c++ /QT
voici le code :
hanoi(n-1,axe1,axe3,axe2);
***************
deplacer(axe1,axe2);
je veux faire une pause de (quelques milliseconde) à la place de *********
salut,
Qt est un framework basé sur une boucle d'événements. Comme tout framework qui suit ce paradigme, les fonctions qui sont appelées doivent retourner en un minimum de temps, et en aucun cas faire des 'sleep'. Sinon, c'est toute ton interface qui 'gèlera' et deviendra inutilisable.
La solution: utiliser comme le propose MonGaulois un QTimer. Cette classe permet d'appeler à intervalles réguliers un slot qu'on lui connecte et qui va effectuer 'une étape' de ton animation (genre incrémenter x, y et redessiner le'sprite').
Je te renvoie à la doc de QTimer pour voir comment ça s'utilise.
j'ai fais:
QTimer::singleShot(200, this, SLOT(updateCaption()));
mais ça marche pas !!!
singleShot ne fait qu'un signal. C'est son seul interet.
IL faut un QTimer, + start avec le temps + un connect sur timeout()
http://qt.developpez.com/doc/4.4/qtimer/#start
http://qt.developpez.com/doc/4.4/qtimer/#timeout
j'ai essayer avec
{hanoi(n-1,axe1,axe3,axe2);
QThread::msleep ( 1000);
deplacer(axe1,axe2);
hanoi(n-1,axe3,axe2,axe1);
}
mais il m'ecrit au niveau du compilation " 'static void QThread::msleep<long unsigned int>' is protected".
que ne comprend tu pas dans ma reponse?