新的需求出来啦,需要自动更新功能,不怕程序升级了。

自动更新,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
View Code

相关文章: