22#include <QProgressDialog>
23#include <QtConcurrent/QtConcurrent>
25class 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 ...Args>
45 Ret runAsync(QString text, Func &&f, Args &&...args)
47 QFuture<Ret> future = QtConcurrent::run(f, std::forward<Args>(args)...);
48 return wait<Ret>(text, future);
51 void reportProgress(QString text,
int value,
int max);