Название: Сигнально-слотовое соединение потоков Отправлено: juvf от Сентябрь 05, 2010, 20:26 Есть GUI поток и второй поток MyThread. Нужно обмениваться событиями между потоками. Решил через слоты-сигналы. В главном потоке генерирую сигнал, во втором потоке должен обрабатываться слот. Не получается. Взял готовый пример из "Макс Шлее - QT4.5. Профессиональное программирование на C++." (стр 618-621). Немножко подправил его: добавил кнопку, чтоб контролировать GUI поток.
Код: #include <QtGui> Таймер в основном потоке генерирует сигнал и в потоке MyTread должен быть вызван слот slotNextValue(). Чтоб проверить в каком из потоков вызывается слот решил слот подвесить, добавив строку while(1) usleep(100). Попадая в slotNextValue GUI поток виснет, т.е. получается что слот обрабатывается в главном потоке. Как сделать чтоб сигнал из GUI потока вызывал слот во втором потоке? Пробовал сделать соединенеи QObject::connect(&timer, SIGNAL(timeout()), &thread, SLOT(slotNextValue()), Qt::QueuedConnection); или QObject::connect(&timer, SIGNAL(timeout()), &thread, SLOT(slotNextValue()), Qt::DirectConnection); не помогает. Gui также виснит. Название: Re: Сигнально-слотовое соединение потоков Отправлено: BRE от Сентябрь 05, 2010, 20:29 Код
И не каких DirectConnection. Название: Re: Сигнально-слотовое соединение потоков Отправлено: juvf от Сентябрь 06, 2010, 09:30 Спасибо, проблема решена
|