Russian Qt Forum
Ноябрь 23, 2024, 16:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Аналог Delay  (Прочитано 15887 раз)
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« : Октябрь 31, 2009, 13:18 »

Есть ли в QT3.3.8 аналог функции Delay(int msec).
Нужно сделать паузу секунд на 20.
Или только через QTimer?
Записан

Как мало времени и как много нужно узнать
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #1 : Октябрь 31, 2009, 13:53 »

В, общем, сделал
Код:
		QTime d=QTime::currentTime();
QTime dd=QTime::currentTime();
while (abs(dd.second()-d.second())<20)
dd=QTime::currentTime();
Записан

Как мало времени и как много нужно узнать
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Октябрь 31, 2009, 13:59 »

Есть qSleep, qWait
Записан
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #3 : Октябрь 31, 2009, 14:10 »

Есть qSleep, qWait

QT 3.3.8 ничего такого нет
Записан

Как мало времени и как много нужно узнать
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #4 : Октябрь 31, 2009, 18:24 »

проще всего используй QTime::elapsed ()

int QTime::elapsed () const
Returns the number of milliseconds that have elapsed since the last time start() or restart() was called.

Note that the counter wraps to zero 24 hours after the last call to start() or restart.

Note that the accuracy depends on the accuracy of the underlying operating system; not all systems provide 1-millisecond accuracy.

Warning: If the system's clock setting has been changed since the last time start() or restart() was called, the result is undefined. This can happen when daylight savings time is turned on or off.


See also start() and restart().
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Октябрь 31, 2009, 19:30 »

Выполни поиск по форуму на предмет "Delay"
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #6 : Октябрь 31, 2009, 22:22 »

Выполни поиск по форуму на предмет "Delay"
Пробовал,0
Записан

Как мало времени и как много нужно узнать
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #7 : Ноябрь 01, 2009, 02:41 »

Есть ли в QT3.3.8 аналог функции Delay(int msec).
Нужно сделать паузу секунд на 20.
Или только через QTimer?

Можно использовать свой код.

Код
C++ (Qt)
class Sleeper : public QThread
{
   public:
static void sleep(unsigned long secs)   { QThread::sleep(secs);   }
static void msleep(unsigned long msecs) { QThread::msleep(msecs); }
static void usleep(unsigned long usecs) { QThread::usleep(usecs); }
};
 
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #8 : Ноябрь 01, 2009, 15:42 »

Пробовал,0

Ой, ошибся Улыбающийся Выполни поиск по "sleep"
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #9 : Ноябрь 01, 2009, 15:58 »

Ой, ошибся Улыбающийся Выполни поиск по "sleep"

Выполни тоже Улыбающийся 3 результата, все в этой теме.

Я тоже припоминаю похожие темы, но не могу найти  Непонимающий
Записан
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #10 : Ноябрь 01, 2009, 16:28 »

нашел
http://www.prog.org.ru/topic_8200_0.html
Записан

Как мало времени и как много нужно узнать
shadone
Гость
« Ответ #11 : Ноябрь 01, 2009, 16:55 »

В, общем, сделал
Код:
		QTime d=QTime::currentTime();
QTime dd=QTime::currentTime();
while (abs(dd.second()-d.second())<20)
dd=QTime::currentTime();
это ооооочень плохой код который полность. загружает процессор без необходимости.  Как минимум в тело цикла нужно добавить QThread::yieldCurrentThread().

вообще есть хорошее правило - если в приложении нужен метод типа Sleep/Delay, то очень очень неправильно в дизайне приложения. Именно из этих соображений в Qt нет и не будет подобных функций.
Записан
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #12 : Ноябрь 01, 2009, 17:14 »

А если

void QThread::sleep ( unsigned long secs );

в потоке?
Записан

Как мало времени и как много нужно узнать
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #13 : Ноябрь 01, 2009, 18:03 »

Ну если нет в 3.3.8 - не помирать же  Улыбающийся
Код:
void MySleep( unsigned int seconds )
{
#ifdef _WIN32
 Sleep(seconds * 1000);
#else
 sleep(seconds);
#endif
}
Записан
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #14 : Ноябрь 01, 2009, 18:56 »

В, общем, сделал
Код:
		QTime d=QTime::currentTime();
QTime dd=QTime::currentTime();
while (abs(dd.second()-d.second())<20)
dd=QTime::currentTime();
это ооооочень плохой код который полность. загружает процессор без необходимости.  Как минимум в тело цикла нужно добавить QThread::yieldCurrentThread().

вообще есть хорошее правило - если в приложении нужен метод типа Sleep/Delay, то очень очень неправильно в дизайне приложения. Именно из этих соображений в Qt нет и не будет подобных функций.

Ты прав.

sleep(x)

не грузит проц, а мой вариант ужжжасно грузит. Спасибо за наводку... Смеющийся
Записан

Как мало времени и как много нужно узнать
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.076 секунд. Запросов: 23.