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?

21
demandé sur Peter Mortensen 2010-09-30 18:16:15

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.

46
répondu Live 2014-11-26 12:19:09

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

20
répondu zmo 2017-05-23 11:54:44

C++11 a quelques trucs de minuterie portable. Découvrez sleep_for.

7
répondu Coder 2012-10-07 14:49:35