Download Data from URL/ru: Difference between revisions
Jump to navigation
Jump to search
(Created page with "{{LangSwitch}} Category:HowTo == Вступление == Следующий фрагмент кода показывает, как загрузить данные как...") |
Waldyrious (talk | contribs) (convert {{doclinkanchor}} to the improved {{doclink}}) |
||
Line 3: | Line 3: | ||
== Вступление == | == Вступление == | ||
Следующий фрагмент кода показывает, как загрузить данные как {{DocLink|QByteArray}} по ссылке. Загруженные данные могут быть сохранены как файл или могуть бы преобразованы в соответствующий обьект. Например если загружено изображение, его можно преобразовать в {{DocLink|QPixmap}} или {{DocLink|QImage}} используя метод {{ | Следующий фрагмент кода показывает, как загрузить данные как {{DocLink|QByteArray}} по ссылке. Загруженные данные могут быть сохранены как файл или могуть бы преобразованы в соответствующий обьект. Например если загружено изображение, его можно преобразовать в {{DocLink|QPixmap}} или {{DocLink|QImage}} используя метод {{DocLink|QImage|loadFromData}}. | ||
Пожалуйста обратите внимание, что хотя имя класса File''Downloader'' загруженные данные не сохраняются на диск! | Пожалуйста обратите внимание, что хотя имя класса File''Downloader'' загруженные данные не сохраняются на диск! |
Latest revision as of 12:38, 21 October 2015
Вступление
Следующий фрагмент кода показывает, как загрузить данные как QByteArray по ссылке. Загруженные данные могут быть сохранены как файл или могуть бы преобразованы в соответствующий обьект. Например если загружено изображение, его можно преобразовать в QPixmap или QImage используя метод loadFromData.
Пожалуйста обратите внимание, что хотя имя класса FileDownloader загруженные данные не сохраняются на диск!
Важные классы
Файл .pro
QT += network
filedownloader.h
#ifndef FILEDOWNLOADER_H
#define FILEDOWNLOADER_H
#include <QObject>
#include <QByteArray>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
class FileDownloader : public QObject
{
Q_OBJECT
public:
explicit FileDownloader(QUrl imageUrl, QObject *parent = 0);
virtual ~FileDownloader();
QByteArray downloadedData() const;
signals:
void downloaded();
private slots:
void fileDownloaded(QNetworkReply* pReply);
private:
QNetworkAccessManager m_WebCtrl;
QByteArray m_DownloadedData;
};
#endif // FILEDOWNLOADER_H
filedownloader.cpp
#include "filedownloader.h"
FileDownloader::FileDownloader(QUrl imageUrl, QObject *parent) :
QObject(parent)
{
connect(
&m_WebCtrl, SIGNAL (finished(QNetworkReply*)),
this, SLOT (fileDownloaded(QNetworkReply*))
);
QNetworkRequest request(imageUrl);
m_WebCtrl.get(request);
}
FileDownloader::~FileDownloader() { }
void FileDownloader::fileDownloaded(QNetworkReply* pReply) {
m_DownloadedData = pReply->readAll();
//emit a signal
pReply->deleteLater();
emit downloaded();
}
QByteArray FileDownloader::downloadedData() const {
return m_DownloadedData;
}
Использование
Загрузка данных по ссылке
Объявим слот
private slots:
void loadImage();
Соеденим сигнал downloaded() со слотом
QUrl imageUrl("http://qt.digia.com/Documents/1/QtLogo.png");
m_pImgCtrl = new FileDownloader(imageUrl, this);
connect(m_pImgCtrl, SIGNAL (downloaded()), this, SLOT (loadImage()));
Загрузим изображение из загруженной информации.
void MainWindow::loadImage()
{
QPixmap buttonImage;
buttonImage.loadFromData(m_pImgCtrl->downloadedData());
}