|
|||||||
|
Qt: Скачивание данных по HTTP (пример)
Время создания: 20.03.2016 22:41
Раздел: Компьютер - Программирование - Язык C++ (Си++) - Библиотека Qt - Работа с сетью
Запись: xintrea/mytetra_syncro/master/base/1452760745zsgsazmjbz/text.html на raw.githubusercontent.com
|
|||||||
|
|
|||||||
|
Следующий фрагмент кода показывает, как загрузить данные как QByteArray по ссылке. Загруженные данные могут быть сохранены как файл или могуть бы преобразованы в соответствующий обьект. Например если загружено изображение, его можно преобразовать в QPixmap или QImage используя метод loadFromData. Пожалуйста обратите внимание, что хотя имя класса FileDownloader, загруженные данные не сохраняются на диск!
QT += network #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 #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()); } |
|||||||
|
Так же в этом разделе:
|
|||||||
|
|||||||
|
|||||||
|