/* * 重写 QThread 以实现多线程下载功能 */ #ifndef DOWNLOADTHREAD_H #define DOWNLOADTHREAD_H #include #include #include #include #include class DownloadThread : public QThread // 继承 QThread { Q_OBJECT public: DownloadThread(QProgressDialog *dialog, QString url, QString save, QString fileName, QListView *view, bool deleteZip, bool unzip, QJsonArray *localList); void SettingVirtualMachine(QString savePath); QProgressDialog *dialog; QString fileUrl; QString fileSaveName; QString fileSavePath; QListView *localView; QJsonArray *localJsonList; bool downloadDeleteZip; bool downloadUnzip; protected: void run(); // 核心 void ReadLocalInformation(); signals: // 防止非主线程刷新控件导致程序退出 void MessageBoxInfo(QString info); void MessageBoxError(QString info); void ChangeDialog(QProgressDialog *dialog, int value, int downloadBytes, int totalBytes); void Finish(); }; #endif // DOWNLOADTHREAD_H