Здравствуйте, гость ( Вход | Регистрация )
kwisp | Дата 30.3.2010, 13:03 |
странно - я думал, что таймеры это объекты режима ядра и выполняются они не в контексте текущего процесса. Qt же кросплатформенная - видимо с этим связано выполнение в обработчике событий. может таймер и посчитал всё верно, однако возможно он становится неактивным по приходу события окончания отсчёта, а событие не может быть обработано из за while(timer.isActive()) поэтому происходит зацикливание. по-моему логично. |
|
zss | Дата 30.3.2010, 12:51 |
while(timer.isActive()) -- не дает сработать циклу-обработчику событий, события времени -- обычные события, а ты запуская такой цикл не даешь обрабатывать события из очереди. странно - я думал, что таймеры это объекты режима ядра и выполняются они не в контексте текущего процесса. QCoreApplication::processEvents эта функция принудительно вызывает обработчик событий на месте своего вызова. помогло. спасибо. Но думал, что есть что-то схожее с CreateWaitableTimer, который не зависит от цикла обработки событий. |
|
kwisp | Дата 30.3.2010, 12:44 |
Sleep, чтоб просто показать, что есть некие действия замечательно вводит в заблуждение по-моему. while(timer.isActive()) -- не дает сработать циклу-обработчику событий, события времени -- обычные события, а ты запуская такой цикл не даешь обрабатывать события из очереди. вариантов решения проблемы не один. как вариант можно использовать QCoreApplication::processEvents эта функция принудительно вызывает обработчик событий на месте своего вызова. по ссылке мной приведённой ходил? |
|
zss | Дата 30.3.2010, 12:39 |
zss, не удивительно, что ничего не поменялось! зачем тебе и таймер и Sleep() ? документацию не читал факт. почему просто нельзя вызвать нужный метод с помощью статического метода ??? QTimer::singleShot(5000,this,SLOT(slMethod())) мне не нужен вызов метода. мне нужно ожидание отработки таймера. Что-то вроде WaitForSingleObject на заданный период времени с возможностью проверки срабатывания. З.Ы. Я вроде и тему так назвал. Sleep, чтоб просто показать, что есть некие действия |
|
kwisp | Дата 30.3.2010, 11:54 |
zss, не удивительно, что ничего не поменялось! зачем тебе и таймер и Sleep() ? документацию не читал факт. почему просто нельзя вызвать нужный метод с помощью статического метода ??? QTimer::singleShot(5000,this,SLOT(slMethod())) ================= вот ещё метод от BRE |
|
zss | Дата 30.3.2010, 11:25 |
судя по документации Цитата This property holds whether the timer is a single-shot timer. A single-shot timer fires only once, non-single-shot timers fire every interval milliseconds. |
|
Litkevich Yuriy | Дата 30.3.2010, 11:11 |
ничего не поменялось а что ты сделал-то хоть? |
|
zss | Дата 30.3.2010, 10:57 |
есть метод void setSingleShot ( bool singleShot ) к примеру ничего не поменялось |
|
kwisp | Дата 30.3.2010, 10:52 |
zss, не то пишешь. читай внимательно документацию по QTimer есть метод void setSingleShot ( bool singleShot ) к примеру + статический метод void singleShot ( int msec, QObject * receiver, const char * member ) |
|
zss | Дата 30.3.2010, 10:45 |
Ну, собственно, QTimer да вот что-то не работает
не выходит из цикла |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 28.3.2024, 20:29 |