crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QFuture и QtConcurrent, Как правильно получить данные из функции, запущенной в другом потоке
silver47
  опции профиля:
сообщение 4.8.2011, 12:44
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

Спасибо сказали: 40 раз(а)




Репутация:   6  


Доброго времени суток.

Опять вернулся к запуску методов в другом потоке с помощью QtConcurrent::run. Теперь появилась задача, запустить в другом потоке метод, который возвращает некоторые значения. Для этого как бы служит QFuture. Но не пойму как им пользоваться.

допустим есть некий класс MyClass, со своим методом QString MyClass::getSomeString(); Как получить строку, возвращаемую этим методом?

MyClass MC;
QFuture<QString> f1 = QtConcurrent::run(&MC, MC.getSomeString);


Ошибка при сборке:
argument of type 'QString (MyClass::)()' does not match 'QString (MyClass::*)()'

Толковых примеров использования не нашел.

Спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 4.8.2011, 14:39
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


смотри в сторону QFutureWatcher
MyClass myObject;
QFutureWatcher<int> watcher;
connect(&watcher, SIGNAL(finished()), &myObject, SLOT(handleFinished()));

// Start the computation.
QFuture<int> future = QtConcurrent::run(...);
watcher.setFuture(future);

это пример из документации Qt

Сообщение отредактировал wiz29 - 4.8.2011, 14:41
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 4.8.2011, 14:53
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Может:
MyClass MC;
QFuture<QString> f1 = QtConcurrent::run(this, MC::getSomeString);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 23:25