에서 Qt를에서 파일을 다운로드하고,이 기사를 건너 왔어요 :내가 파일을 다운로드해야 내 프로그램에서 URL
http://www.java2s.com/Code/Cpp/Qt/DownloadfromURL.htm
이 코드는하지만 내 프로그램에 작업 그래서 맞지 않습니다 그것을 다시 코딩했다. 나는 그것을 모두 완료하지는 않았지만 나는 기본 코드를 가지고있다. 그러나 테스트 할 때 보내기 오류보고 창이 나타납니다. 나는 그것이 아니다 말했듯이 QtDownload.cpp
#include "qtdownload.h"
#include <QUrl>
#include <QNetworkRequest>
#include <QFile>
QtDownload::QtDownload()
: QObject(0)
{
this->connectSignalsAndSlots();
}
QtDownload::~QtDownload()
{
if (reply != 0)
delete reply;
}
void QtDownload::connectSignalsAndSlots()
{
QObject::connect(&manager, SIGNAL(finished(QNetworkReply*)),this, SLOT(downloadFinished(QNetworkReply*)));
QObject::connect(reply, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(downloadProgress(qint64,qint64)));
}
void QtDownload::setTarget(const QString &t)
{
this->target = t;
}
void QtDownload::downloadFinished(QNetworkReply *data)
{
QFile localFile("downloadedfile");
if (!localFile.open(QIODevice::WriteOnly))
return;
localFile.write(data->readAll());
localFile.close();
delete data;
data = 0;
}
void QtDownload::download()
{
QUrl url = QUrl::fromEncoded(this->target.toLocal8Bit());
QNetworkRequest request(url);
this->reply = manager.get(request);
}
void QtDownload::downloadProgress(qint64 recieved, qint64 total)
{
}
MAIN.CPP
#include "qtdownload.h"
#include <QTimer>
int main()
{
QtDownload dl;
dl.setTarget("http://www.java2s.com/Code/Cpp/Qt/DownloadfromURL.htm");
QTimer::singleShot(0, &dl, SLOT(download()));
}
QtDownload.h
#include <QObject>
#include <QString>
#include <QNetworkAccessManager>
#include <QNetworkReply>
class QtDownload : public QObject
{
Q_OBJECT
public:
explicit QtDownload();
~QtDownload();
void setTarget(const QString& t);
private:
QNetworkAccessManager manager;
QNetworkReply* reply;
QString target;
void connectSignalsAndSlots();
signals:
public slots:
void download();
void downloadFinished(QNetworkReply* data);
void downloadProgress(qint64 recieved, qint64 total);
};
:
는 지금까지 내 코드입니다 완전히 끝났지 만 나는 자고있다. 계속 진행하기 전에이 부분을 사용해보십시오.
나는 또한 Qt를 처음 사용하므로 모든 팁을 높이 평가할 수 있습니다.
아직 오류보고가 전송되지 않습니다. –
코드가 수정되었습니다. – OneOfOne
죄송합니다, 귀하의 답변에 많은 오류가 –