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