내 작은 프로그램에 대한 도움을 찾고 있습니다. QNetwork 클래스를 사용하여 웹 사이트에서 설치 프로그램 (.exe)을 다운로드하고 싶습니다. 나는 이미 그것에 대해 많은 게시물을 검색하고 읽었지만 작동하지 않습니다.웹 사이트에서 파일 다운로드
download.cpp :
Download::Download(QObject *parent) :
QObject(parent)
{
}
void Download::initialiseDownload()
{
QNetworkAccessManager manager;
QNetworkRequest request;
request.setUrl(QUrl("http://www.mylink.com/setup.exe"));
reply = manager.get(request);
QObject::connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(downloadError(QNetworkReply::NetworkError)));
QObject::connect(reply, SIGNAL(downloadProgress(qint64, qint64)), this, SLOT(updateProgress(qint64, qint64)));
QObject::connect(reply, SIGNAL(finished()), this, SLOT(downloadFinished()));
}
void Download::downloadError(QNetworkReply::NetworkError err)
{
qDebug() << reply->errorString();
reply->deleteLater();
}
void Download::updateProgress(qint64 read, qint64 total)
{
qDebug() << "Progress...";
qint64 percent = (read/total) * 100;
qDebug() << percent;
}
void Download::downloadFinished()
{
qDebug() << "Finished !";
QByteArray b = reply->readAll();
QFile file("./sdk/setup.exe");
file.open(QIODevice::WriteOnly);
QDataStream out(&file);
out << b;
reply->deleteLater();
}
download.h : 나는 OpenSSL을위한 DLL을 추가했고 그것이 작동
#include "launcher.h"
#include <QObject>
#include <QtNetwork>
class Download : public QObject, public Launcher
{
Q_OBJECT
public:
explicit Download(QObject *parent = 0);
void Download::initialiseDownload();
private slots:
void downloadError(QNetworkReply::NetworkError err);
void updateProgress(qint64 read, qint64 total);
void downloadFinished();
private:
QNetworkReply *reply;
};
. 또한 ".pro"파일에 "네트워크"를 추가했습니다. 그러나 프로그램을 실행하고 다른 클래스의 푸시 버튼을 클릭하면 initialiseDownload()가 작동하지만 신호가 비활성 상태 인 것처럼 보입니다.
미리 감사드립니다.