DPS/DataPlatform/QWaiting.h

49 lines
896 B
C
Raw Normal View History

2025-06-23 10:41:33 +08:00
#pragma once
#include <QDialog>
#include <QWidget>
#include <qthread>
#include <functional>
#include <QThread>
#include <qapplication.h>
#include <QtConcurrent/qtconcurrentrun.h>
#include <qlabel.h>
class QWaitingDialog : public QDialog
{
Q_OBJECT
public:
QWaitingDialog(QWidget* parent, QString msg);
~QWaitingDialog();
void changeMessage(QString msg);
protected:
private:
QMovie* m_Move;
QLabel* labelmsg;
};
class QWaiting :public QObject {
Q_OBJECT
public:
QWaiting(QWidget* parent, QString msg);
template <typename FunctionObject>
/**
2025-06-23 18:01:09 +08:00
2025-06-23 10:41:33 +08:00
**/
bool working(FunctionObject functionObject)
{
QFuture<bool> future = QtConcurrent::run(functionObject);
while (!future.isFinished()) {
QApplication::processEvents(QEventLoop::AllEvents);
}
return future.result();
}
~QWaiting();
void changeMessage(QString msg);
private:
QWaitingDialog* _dialog;
};