Russian Qt Forum

Qt => Многопоточное программирование, процессы => Тема начата: smartchecker от Декабрь 01, 2011, 23:51



Название: Возврат результата из потока по завершении. Как?
Отправлено: smartchecker от Декабрь 01, 2011, 23:51
Как вернуть в GUI результат из потока.
Поток формирует QList.


Название: Re: Возврат результата из потока по завершении. Как?
Отправлено: LisandreL от Декабрь 02, 2011, 00:11
Через общую переменную (например член класса-потока/класса-воркера) или через сигнал-слот.
Для сигнала-слота (автоматического или через очередь) с большой вероятностью надо будет зарегистрировать мета-тип.


Название: Re: Возврат результата из потока по завершении. Как?
Отправлено: smartchecker от Декабрь 02, 2011, 10:09
Интересует сигнал-слот.
Хочется чтобы по сигналу finished() из потока в GUI приехал рез-тат.
Как бы это реализовать?


Название: Re: Возврат результата из потока по завершении. Как?
Отправлено: Bepec от Декабрь 02, 2011, 10:16
Прочитать Шлее система Сигнал слотов.

в *.h
signals:
    void finished(int Row, QString name, myStruct struct);

в *.cpp
    emit finished(0, "Имя Имячко мое", struct);


Название: Re: Возврат результата из потока по завершении. Как?
Отправлено: fuCtor от Декабрь 16, 2011, 08:38
А почему бы не воспользоваться методами из QtConcurrent, например QtConcurrent::run + QFutureWatcher.


Название: Re: Возврат результата из потока по завершении. Как?
Отправлено: Igors от Декабрь 16, 2011, 15:25
Интересует сигнал-слот.
Хочется чтобы по сигналу finished() из потока в GUI приехал рез-тат.
Как бы это реализовать?
Лучше этого не получать - можно нажить много проблем. Проще и лучше действовать как сказал LisandreL