新的需求出来啦,需要自动更新功能,不怕程序升级了。
自动更新,QML不好写,需要c++来辅助,这里就涉及QML中调用c++功能(这里就不写了,百度一下,很多)。
思路:获取版本》下载程序》安装程序
第一步,获取版本信息,可以通过XMLHttpRequest获取最新版本。
第二步,下载程序,通过Qt c++的QtNetwork:
头文件:
1 #ifndef ZRDOWNLOAD_H 2 #define ZRDOWNLOAD_H 3 4 #include <QObject> 5 #include <QtNetwork/QNetworkAccessManager> 6 #include <QFile> 7 #include <QtNetwork/QNetworkReply> 8 #include <QtNetwork/QNetworkRequest> 9 #include <QIODevice> 10 11 class ZRDownload : public QObject 12 { 13 Q_OBJECT 14 Q_PROPERTY(QString url READ GetUrl WRITE SetUrl) 15 Q_PROPERTY(QString fileName READ GetFileName WRITE SetFileName) 16 public: 17 explicit ZRDownload(QObject *parent = 0); 18 ~ZRDownload(); 19 20 QString GetUrl(); 21 void SetUrl(QString u); 22 QString GetFileName(); 23 void SetFileName(QString fn); 24 private: 25 QString url; 26 QString fileName; 27 QFile *file; 28 QNetworkAccessManager *accessManager; 29 QNetworkRequest request; 30 QNetworkReply *reply; 31 32 signals: 33 void progressPosition(double pre); //更新进度条信号 34 void downloadFinished(); //结束信号 35 36 protected slots: 37 void httpDownload(); 38 void replyFinished(QNetworkReply*reply); 39 void onDownloadProgress(qint64 bytesSent,qint64 bytesTotal); 40 void onReadyRead(); 41 }; 42 43 #endif // ZRDOWNLOAD_H