В моем приложении я хочу, чтобы при выполнении цикла каждый раз, когда элемент управления передается в цикл, каждое выполнение должно быть отложено на определенное время. Как я могу это сделать?
Как дать задержку в выполнении цикла с помощью 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.