Russian Qt Forum

Qt => Общие вопросы => Тема начата: AAXEE от Сентябрь 23, 2009, 21:45



Название: QThread. Как грамотно перенести все в поток?
Отправлено: AAXEE от Сентябрь 23, 2009, 21:45
Есть виджет со слотом slowMethod()( который сначала был fastMethod() ).
Его работа подвешивает приложение.
Как правильно добавить поток к уже существующему коду?
1)Внутри класса виджета добавить поток. В run() засунуть вызов slowMethod(), а потом создать в основном виджете еще один слот который запускает поток?
2)Или вырезать код из slowMethod()  в run(), добавив ко всему "parent->", а в методе slowMethod() запускать поток?

Хотелось бы с пояснением почему именно так, а не иначе.
Спасибо!


Название: Re: QThread. Как грамотно перенести все в поток?
Отправлено: BRE от Сентябрь 23, 2009, 21:54
Посмотри в сторону QtConcurrent.


Название: Re: QThread. Как грамотно перенести все в поток?
Отправлено: AAXEE от Сентябрь 23, 2009, 22:08
Спасибо, смотрю. Только пока не понимаю как это можно сделать.
А все таки, если с потоками, как лучше поступить?


Название: Re: QThread. Как грамотно перенести все в поток?
Отправлено: BRE от Сентябрь 23, 2009, 22:32
Спасибо, смотрю. Только пока не понимаю как это можно сделать.
А все таки, если с потоками, как лучше поступить?
Про первый вариант не особо понял, но все виджеты должны жить и работать в главном потоке (обязательно!).
А второй вариант возможен, при вызове слота, в нем создается и запускается поток, который делает всю работу.