#ifndef QWAITINGDLG_H #define QWAITINGDLG_H #include <QLabel> #include <QNetworkReply> #include <QDialog> class WaitingIndicator : public QWidget { Q_OBJECT public: using QWidget::QWidget; QColor mColor{0x0088ff}; public slots: void success(); protected: void timerEvent(QTimerEvent * event) override; void paintEvent(QPaintEvent * event) override; int angle{0}; int timerId{0}; }; class WaitingDlg : public QDialog { Q_OBJECT public: explicit WaitingDlg(QWidget *parent = nullptr, QString text = 0, QString sucText = 0); inline void connAbort(QNetworkReply *reply) { connect(this, &WaitingDlg::rejected, reply, [reply] { reply->blockSignals(true); reply->abort(); reply->blockSignals(false); reply->deleteLater(); }); } QLabel *fdText; QString sucText; WaitingIndicator *mIndicator; int keepTime = 750; public slots: void show(); void showLater(); void success(); protected: void timerEvent(QTimerEvent *) override; void closeEvent(QCloseEvent *) override; private: int closeTimerId{0}, showTimerId{0}; }; #endif // QWAITINGDLG_H