Как задать задержку выполнения цикла с использованием Qt - PullRequest
24 голосов
/ 30 сентября 2010

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

Ответы [ 3 ]

48 голосов
/ 30 сентября 2010

РЕДАКТИРОВАТЬ (удалено неправильное решение).РЕДАКТИРОВАТЬ (чтобы добавить эту другую опцию):

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

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

Вот код для создания собственного * снаmethod.

#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 секунд соответственно.Если основные таймеры операционной системы поддерживают разрешение.

24 голосов
/ 19 апреля 2014

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

StaticПубличные пользователи

  • 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 # статических электричество общественности члены

8 голосов
/ 07 октября 2012

C ++ 11 имеет некоторые портативные таймеры.Выезд sleep_for.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...