Comment donner un délai dans l'exécution d'une boucle en utilisant Qt
Dans mon application, je veux que quand une boucle est exécutée chaque fois que le contrôle des transferts de la boucle, chaque exécution doit être retardé d'un temps particulier. Comment puis-je faire cela?
3 réponses
MODIFIER (supprimé mauvaise solution). EDIT (pour ajouter cette option):
une autre façon de l'utiliser serait la sous-classe QThread puisqu'elle a protégé *les méthodes de sommeil.
QThread::usleep(unsigned long microseconds);
QThread::msleep(unsigned long milliseconds);
QThread::sleep(unsigned long second);
Voici le code pour créer votre propre *méthode sleep.
#include <QThread>
class Sleeper : public QThread
{
public:
static void usleep(unsigned long usecs){QThread::usleep(usecs);}
static void msleep(unsigned long msecs){QThread::msleep(msecs);}
static void sleep(unsigned long secs){QThread::sleep(secs);}
};
et vous l'appeler en faisant ceci:
Sleeper::usleep(10);
Sleeper::msleep(10);
Sleeper::sleep(10);
cela vous donnerait un délai de 10 microsecondes, 10 millisecondes ou 10 secondes, en conséquence. Si les minuteries du système d'exploitation sous-jacent résolution.
comme une mise à jour de la réponse de@Live, pour Qt ≥ 5.2 il n'y a plus besoin de sous-classe QThread
, comme aujourd'hui les fonctions du sommeil sont publiques:
Statique Membres Publics
QThread * currentThread()
Qt::HANDLE currentThreadId()
int idealThreadCount()
void msleep(unsigned long msecs)
void sleep(unsigned long secs)
void usleep(unsigned long usecs)
void yieldCurrentThread()
cf http://qt-project.org/doc/qt-5/qthread.html#static-public-members
C++11 a quelques trucs de minuterie portable. Découvrez sleep_for.