Table of Content
Сваляне на данни от URL
Приложеният отрязък от код показва как се свалят данни като QByteArray [qt-project.org] от URL (адрес на даден ресурс в Интернет или друга мрежа). Свалените данни могат да бъдат записани като файл или да бъдат преобразувани в подходящ обект. Така например, ако е свалена картинка, то тя може да бъде заредена от QPixmap [qt-project.org] или QImage [qt-project.org] чрез метода loadFromData() [qt-project.org]
Моля, обърнете внимание, че приложения клас FileDownloader независимо от името си не запазва свалените данни на диска като файл!
Важни класове
- QNetworkAccessManager [qt-project.org]
- QNetworkRequest [qt-project.org]
- QNetworkReply [qt-project.org]
- QUrl [qt-project.org]
.pro файл
- QT += network
Ако целите съвместимост със Symbian устройства не забравяйте да добавите необходимите разрешения за ползване на мрежови услуги.
- symbian:TARGET.CAPABILITY += NetworkServices
filedownloader.h
- #ifndef FILEDOWNLOADER_H
- #define FILEDOWNLOADER_H
- #include <QObject>
- #include <QByteArray>
- #include <QNetworkAccessManager>
- #include <QNetworkRequest>
- #include <QNetworkReply>
- {
- Q_OBJECT
- public:
- virtual ~FileDownloader();
- signals:
- void downloaded();
- private slots:
- private:
- QNetworkAccessManager m_WebCtrl;
- QByteArray m_DownloadedData;
- };
- #endif // FILEDOWNLOADER_H
filedownloader.cpp
- #include "filedownloader.h"
- {
- m_WebCtrl.get(request);
- }
- FileDownloader::~FileDownloader()
- {
- }
- {
- m_DownloadedData = pReply->readAll();
- //emit a signal
- pReply->deleteLater();
- emit downloaded();
- }
- {
- return m_DownloadedData;
- }
Употреба
Заредете QPixmap от URL
- Декларирайте слот
- private slots:
- void loadImage();
- Свържете сигнал downloaded() към слота
- m_pImgCtrl = new FileDownloader(imageUrl, this);
- connect(m_pImgCtrl, SIGNAL(downloaded()), SLOT(loadImage()));
- Заредете QPixmap от свалените данни
- void MainWindow::loadImage()
- {
- QPixmap buttonImage;
- buttonImage.loadFromData(m_pImgCtrl->downloadedData());
- }

