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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Пауза (задержка) на QT 4.1.0  (Прочитано 40385 раз)
Turing
Гость
« : Февраль 02, 2006, 07:59 »

Кто-нить знает как реализовать паузу (задержку на n секунд) в программме написанной на Qt 4.1.0???
Записан
BaltikS
Гость
« Ответ #1 : Февраль 02, 2006, 12:26 »

sleep - не поможет?
Записан
Konstantin
Гость
« Ответ #2 : Февраль 02, 2006, 21:04 »

Цитата: "Turing"
Кто-нить знает как реализовать паузу (задержку на n секунд) в программме написанной на Qt 4.1.0???


QTimer ?
Записан
Gop-Stop
Гость
« Ответ #3 : Февраль 02, 2006, 21:38 »

в 3-е я делал так

QTime time;
time.start();
for(;time.elapsed() < 1000;)
{
 можно (qApp->processEvents()Подмигивающий
}

продолжение
Записан
Turing
Гость
« Ответ #4 : Февраль 02, 2006, 22:05 »

Цитата: "Gop-Stop"
в 3-е я делал так

QTime time;
time.start();
for(;time.elapsed() < 1000;)
{
 можно (qApp->processEvents()Подмигивающий
}

продолжение


Это как раз я и искал  (под Qt 4 я уже подправил) :!:
Спасибо  Веселый
Записан
Vitto74
Гость
« Ответ #5 : Февраль 25, 2010, 20:38 »

Блин. На что ты заменил time.elapsed()?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #6 : Февраль 25, 2010, 20:57 »

Очень актуальный вопрос 4 года спустя
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
A-GENT
Гость
« Ответ #7 : Ноябрь 17, 2010, 20:47 »

Ха, а для меня актуально  Шокированный
Записан
erinyes
Гость
« Ответ #8 : Март 01, 2011, 11:00 »

Собственно, сабж. Только Qt 4.6.
Есть поток, в котором создается объект класса, который интерпретирует команды. Одна из этих команд - пауза на n секунд. Я так понимаю, для потока wait() работает, если вызывается exec(), а я не вызываю. Может быть помог бы sleep(), но он protected.
Есть ли что-нибудь кроме метода с циклом (как-то он мне не нравится)? Ну то есть как лучше по правильному сделать? Например, можно создать мьютекс, заблокировать и в течении n секунд ждать разблокировки, но это криво  Улыбающийся Может я как-то неправильно понял как с потоками работать и можно exec() использовать и wait(). Посоветуйте пожалуйста!
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #9 : Март 01, 2011, 11:14 »

Код
C++ (Qt)
void mySleep (uint msec)
{
#ifdef Q_WS_WIN
Sleep (msec);
#else //Q_WS_WIN
usleep (msec * 1000);
#endif //Q_WS_WIN
}
 
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
erinyes
Гость
« Ответ #10 : Март 01, 2011, 11:47 »

Спасибо!
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #11 : Март 01, 2011, 12:27 »

Код
C++ (Qt)
#include <QThread>
 
class thread_hack : public QThread
{
public:
   using QThread::sleep;
   using QThread::msleep;
   using QThread::usleep;
};
 
...
 
// using
thread_hack::msleep(5000);
 
Записан

Гугль в помощь
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #12 : Март 01, 2011, 13:28 »

А еще
Код
C++ (Qt)
#define private public
#include <QThread>
 
QThread::msleep(5000);
 

Не нужно пользоваться хаками.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #13 : Март 01, 2011, 15:20 »

Код
C++ (Qt)
#define private public
#include <QThread>
 

Остроумно )

Вообще не совсем понятно, почему тролли сделали эти методы protected. Судя по реализации, там ничего криминального нет. Под виндой sleep зовется, под никсами что-то на мьютексе намутили с ожиданием.

А у себя я зову sleep из буста...
Код
C++ (Qt)
#include <boost/thread/thread.hpp>
void sleep(int milliseconds)
{
   boost::this_thread::sleep(boost::posix_time::milliseconds(milliseconds));
}
 
Записан

Гугль в помощь
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3257


Просмотр профиля
« Ответ #14 : Март 01, 2011, 16:57 »

метод протектед тк его можно звать только из треды, создаваемой внутри qthread. иначе слипнется тред вызывающего, неужели неясно
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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