#ifndef BLASTOPEPAGE_H #define BLASTOPEPAGE_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "PageWidget.h" #include "hprojectdao.h" #include "fireWidget/firingwidget.h" // 包含 firingWidget 头文件 #include "countdownwidget.h" // 自定义结构体 struct ProgressBarTriple { QProgressBar* bar1; QProgressBar* bar2; QProgressBar* bar3; // 构造函数 ProgressBarTriple(QProgressBar* b1, QProgressBar* b2, QProgressBar* b3) : bar1(b1), bar2(b2), bar3(b3) {} }; namespace Ui { class BlastOpePage; } class BlastOpePage : public QWidget { Q_OBJECT public: explicit BlastOpePage(QWidget *parent = nullptr); ~BlastOpePage(); private slots: void PageChanged(int page); void onComboBoxIndexChanged(int index); void updateProgressBar(int value,int row); void onUpdateBlastStatus(int status,int row); void changeButByMqtt(int status, int row); void showDownWidget(QString uuid,const QString &topic,const QString &message); void updateProject(QString uuid); void destroyFiringWidget(const QString &uuid); void on_btnSelect_clicked(); void onItemChanged(QStandardItem *item); private: void handleFeaturePermission(QWebEnginePage *page, const QUrl &securityOrigin, QWebEnginePage::Feature feature); void RefreshData(); void loadDataFromSource(int currentPage,int pageSize); void InitFace(); void closeWebViewAndRestoreUI(); void parseJsonString(const QJsonDocument &jsonDoc); void onUrlChanged(const QUrl &newUrl); void initPagination(); QJsonObject sendPostRequest(const QUrl &url, const QJsonObject &data); QJsonObject getMetaInfo(); void handleButtonClick(int row,QPushButton *button); private: Ui::BlastOpePage *ui; QList headers; QStandardItemModel *model; QMap uuidWidgetMap; QWebEngineView *view; QList originalWidgets; // 用于保存原始的 UI 控件 QWidget *overlayWidget; QVBoxLayout *layout; QString certifyId; PageWidget *pageWidget; QJsonArray dataArray; HProjectDao dao; QVector progressBars; // 用于保存每行的两个进度条指针 QMap uuidMap; // 用于存储行号和对应的 uuid QMetaObject::Connection connectionItem; int pageSize; //每页显示的记录数量 int currentPage; //当前页面 int totalCount; }; #endif // BLASTOPEPAGE_H