QtConcurrent::run() runs a function in a worker thread. It returns a QFuture, which is then used to synchronize with the result: QString foo(); QFuture<QString> f = QtConcurrent::run(foo); ... QString string = f.result() Calling f.result() will block the current thread until foo() has returned. The QFuture template argument must match the return type of foo(). If the function you want to run takes