Как дать задержку в выполнении цикла с помощью Qt

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

Ответы

Ответ 1

EDIT (удалено неправильное решение). EDIT (добавить этот другой вариант):

Другим способом его использования будет подкласс QThread, поскольку он защитил методы * sleep.

QThread::usleep(unsigned long microseconds);
QThread::msleep(unsigned long milliseconds);
QThread::sleep(unsigned long second);

Вот код, чтобы создать свой собственный метод * 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);}
};

и вы вызываете это, делая это:

Sleeper::usleep(10);
Sleeper::msleep(10);
Sleeper::sleep(10);

Это даст вам задержку в 10 микросекунд, 10 миллисекунд или 10 секунд, соответственно. Если базовые операторы операционной системы поддерживают разрешение.

Ответ 2

Как обновление @Live answer, для Qt ≥ 5.2 нет необходимости в подклассе QThread, так как теперь функции сна являются общедоступными:

Статические общедоступные члены

  • 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

Ответ 3

В С++ 11 есть несколько переносных файлов таймера. Проверьте sleep_for.