22 #include <QProgressDialog>
23 #include <QtConcurrent/QtConcurrent>
25 class LongUiTask :
public QProgressDialog
28 explicit LongUiTask(QString title);
32 Ret wait(QString text,
const QFuture<Ret>& future)
36 while (!future.isFinished()) {
38 QCoreApplication::processEvents();
41 return future.result();
44 template <
class Ret,
class Func,
class Arg>
45 Ret runAsync(QString text, Func&& f, Arg&& arg)
47 QFuture<Ret> future = QtConcurrent::run(f, arg);
48 return wait<Ret>(text, future);
51 void reportProgress(QString text,
int value,
int max);
55 #endif // LONGUITASK_H