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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QThread и вечний цикл  (Прочитано 6907 раз)
FreTFuL
Гость
« : Августа 20, 2010, 11:30 »

У меня создаєтся поток. в нем цикл виполняється пока открити среда.  И так вопрос:

Какую команду мне в нем визвать чтоби обрабатовались собития?


моя функція с циклом запустаєтся из среди воттак:
Код:
void MailSender::run(){
    settings->readSettings();
    QTimer::singleShot(1,this,SLOT(executeSenderLoop()));
    exec();

}

что мне нужно добавить между инструкциями цикла для того чтоби работали сигнали и слоти.
Записан
BRE
Гость
« Ответ #1 : Августа 20, 2010, 11:41 »

А что они разве не работают?
Ты напиши что должно получиться.
Записан
FreTFuL
Гость
« Ответ #2 : Августа 20, 2010, 12:50 »

когда работаєт тот цикл то сигнали и собития не обрабативаються !!! потом чтоу сам цикс в том слоте что визван первим и пока он исполняється то другиє сигнали не принимаються как я понимаю!
Записан
BRE
Гость
« Ответ #3 : Августа 20, 2010, 12:55 »

когда работаєт тот цикл то сигнали и собития не обрабативаються !!! потом чтоу сам цикс в том слоте что визван первим и пока он исполняється то другиє сигнали не принимаються как я понимаю!
Ты какой цикл имеешь ввиду?
Цикл обработки событий, запускаемый в exec() или у тебя есть свой цикл в executeSenderLoop.
Если ты крутишь цикл в executeSenderLoop, то его можно заменить, например, запустив в потоке таймер, который будет постоянно через заданный интервал времени вызывать твой слот, в котором ты будешь проверять наличие почты.
Записан
FreTFuL
Гость
« Ответ #4 : Августа 20, 2010, 12:59 »

У меня свой цикл.  В каком исполняються нужниє мне инструкции но мне нужно чтоби во время етого цикла обрабатовались сигнали тоже!!!
Записан
BRE
Гость
« Ответ #5 : Августа 20, 2010, 13:03 »

У меня свой цикл.  В каком исполняються нужниє мне инструкции но мне нужно чтоби во время етого цикла обрабатовались сигнали тоже!!!
Короче, что бы работали межпоточные сигналы, нужно что бы работал цикл обработки событий.
Как ты его будешь крутить, с помощью exec(), QEventLoop или вызывая QApplication::processEvents() решать тебе!!!

Кстати, что бы только отправить сигнал другому потоку eventloop не обязателен, а вот что бы поток мог принять сигнал - обязателен.
« Последнее редактирование: Августа 20, 2010, 13:07 от BRE » Записан
FreTFuL
Гость
« Ответ #6 : Августа 20, 2010, 13:06 »

QApplication::processEvents()  - можно использовать без exec()Непонимающий??
Записан
BRE
Гость
« Ответ #7 : Августа 20, 2010, 13:09 »

QApplication::processEvents()  - можно использовать без exec()Непонимающий??
В потоках нет, это я вообще про event loop.
Записан
labview
Гость
« Ответ #8 : Августа 20, 2010, 13:10 »

Вот в этой простой проге я использовал QThread с сигналами и слотами. Если интересно загляни. Прога на самом деле совсем простая, думаю разберёшься.

http://www.prog.org.ru/index.php?topic=14556.msg95023#msg95023
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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