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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: run() и exec()  (Прочитано 4752 раз)
akaMDA
Гость
« : Ноябрь 25, 2010, 23:07 »

Код:
void dbWord::run()
{
    while(1)
    {
         ...
    }

    exec();
}

В цикле производится обработка данных. При этом эти данные приходят из другого потока через сигнал. Будет ли сигнал приходить? Ведь до exec() не дошло еще.
Записан
BRE
Гость
« Ответ #1 : Ноябрь 25, 2010, 23:18 »

Нет, но можно сделать что-бы доходили.
Записан
akaMDA
Гость
« Ответ #2 : Ноябрь 25, 2010, 23:25 »

Как? цикл убрать?
Записан
BRE
Гость
« Ответ #3 : Ноябрь 25, 2010, 23:28 »

Как? цикл убрать?
Зачем, в нем прокручивать события из очереди.
Смотри QEventLoop.
Записан
akaMDA
Гость
« Ответ #4 : Ноябрь 25, 2010, 23:41 »

Код:
void dbWord::run()
{
    while(1)
    {
         ...
         processEvents();
    }

    exec();
}
Так?
А сколько событий может храниться  в очереди?
И сколько событий обработается по processEvents()? Все, что есть в очереди на тот момент, или еще и те, что прибудут во время выполнения?
Записан
BRE
Гость
« Ответ #5 : Ноябрь 25, 2010, 23:51 »

Ну я бы делал как-то так:
Код
C++ (Qt)
void dbWord::run()
{
QEventLoop loop;
while(1)
{
...
loop.processEvents();
}
}
 

Смотри:
bool QEventLoop::processEvents ( ProcessEventsFlags flags = AllEvents )
void QEventLoop::processEvents ( ProcessEventsFlags flags, int maxTime )
enum ProcessEventsFlags

Ну и попробуй это погонять... Мне тоже интересно сколько событий может храниться в очереди. Улыбающийся
Записан
akaMDA
Гость
« Ответ #6 : Ноябрь 26, 2010, 20:00 »

void QEventLoop::processEvents ( ProcessEventsFlags flags, int maxTime )
при этой функции , если время истекло до конца выполнения слота, то он будет как бы заморожен и доделан? или игнорирован  и не выполнен до конца?
« Последнее редактирование: Ноябрь 26, 2010, 21:59 от akaMDA » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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