qt/LedOK/gutil/qwaitingdlg.h

52 lines
1.2 KiB
C
Raw Normal View History

2023-09-19 11:49:20 +08:00
#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