1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
#include <QtGui>
#include <QtNetwork>
class myDownload : public QObject
{
Q_OBJECT
//url du fichier à telecharger
QUrl m_url;
//nom du ficher de destination
QString m_dest;
//le network manager utilisé
QNetworkAccessManager m_NetworkAccessManager;
//une progress bar pour avoir un visualisation de l'avancement
QProgressDialog m_bar;
public :
myDownload(const QUrl & url,const QString & text):m_url(url),m_dest (text)
{
m_bar.setWindowModality(Qt::ApplicationModal);
m_bar.show();
QNetworkReply * reply =m_NetworkAccessManager.get (QNetworkRequest (m_url) );
connect(reply,SIGNAL(finished ()),this,SLOT(downloadFinish()));
connect(reply,SIGNAL(downloadProgress (qint64, qint64)),this,SLOT(progress(qint64, qint64 )));
m_bar.exec();
};
public slots :
void downloadFinish()
{
//le download est fini
QNetworkReply * reply = qobject_cast<QNetworkReply *>(sender());
if (reply)
{
QFile file(m_dest);
file.open(QIODevice::WriteOnly);
file.write(reply->readAll ());
}
m_bar.close();
}
//progression du download
void progress (qint64 bytesReceived, qint64 bytesTotal )
{
m_bar.setValue(100.*bytesReceived/bytesTotal-1);
}
};
#include "main.moc"
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
//donner l'url du fichier
QString url =QInputDialog::getText (0, "url", "url");
//donner le nom du fichier de sortie
QString dest =QInputDialog::getText (0, "dest", "dest");
myDownload download(url,dest);
return 0;
} |
Partager