Название: [решено] Как завершить поток, если в нём QEventLoop.exec()? Отправлено: serg_hd от Февраль 23, 2010, 17:14 Собсна:
Код В дебаггере run() постоянно "активен". this.loop.exit(); - не помогает (вообще не пойму какой смысл от этого метода). Как ещё можно завершить поток, если до того кода, который стоит после exec() дело вообще не доходит? Название: Re: Как завершить поток, если в нём QEventLoop.exec()? Отправлено: SABROG от Февраль 23, 2010, 17:25 this.loop.exit(); - не помогает (вообще не пойму какой смысл от этого метода). Как ещё можно завершить поток, если до того кода, который стоит после exec() дело вообще не доходит? QEventLoop::exit()/QEventLoop::quit() надо вызывать не после QEventLoop::exec(), а внутри слота как реакцию на какой-нибудь сигнал, предположим на нажатие кнопки в GUI'шном потоке. Или сигнал timeout() от таймера. Название: Re: Как завершить поток, если в нём QEventLoop.exec()? Отправлено: serg_hd от Февраль 23, 2010, 17:38 Как раз так уже попробовал, но
Код Испускаю сигнал в главном потоке this.signalStop.emit(); после чего ошибка о разных потоках. Как в этом случае одолеть? Ведь если QEventLoop создать в run()'e, к нему нельзя будет обратиться для завершения(( Притом пример из доки: Код Ерунда какая-то. Название: Re: Как завершить поток, если в нём QEventLoop.exec()? Отправлено: BRE от Февраль 23, 2010, 18:05 Испускаю сигнал в главном потоке this.signalStop.emit(); после чего ошибка о разных потоках. Как в этом случае одолеть? Ведь если QEventLoop создать в run()'e, к нему нельзя будет обратиться для завершения(( Тип connect'а должен быть Qt::QueuedConnection. Правда я не знаю как это на Jambi делается.bool QObject::connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * method, Qt::ConnectionType type = Qt::AutoConnection ) [static] Название: [решено] Как завершить поток, если в нём QEventLoop.exec()? Отправлено: serg_hd от Февраль 23, 2010, 18:05 поставил слот как
Код заработало, всем спасибо за внимание и советы |