Russian Qt Forum
Апреля 20, 2025, 08:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Аналог Delay  (Прочитано 16260 раз)
Примерный ученик
Бывалый
*****
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.034 секунд. Запросов: 19.