Table of Content
URL에서 데이터 다운로드받기
아래 코드는 어떻게 하면 URL [ko.wikipedia.org] 로부터 자료를 다운로드 받아 QByteArray [doc.trolltech.com] 에 저장할 수 있는지를 보여주고 있습니다.
다운로드된 자료는 파일로 저장할 수도 있고, 적절한 객체(object)의 형태로 전환(convert)할 수도 있습니다. 예를 들어, 만약 그림을 다운로드하였다면, 이를 각각 객체의 loadFromData() [doc.qt.nokia.com] 메서드를 이용하여 QPixmap [doc.qt.nokia.com] 혹은 QImage [doc.qt.nokia.com] 로 전환할 수 있습니다.
예제 클래스 “FileDownloader“의 이름이 ‘File-Downloader’이지만, 실제 다운로드된 데이터를 파일로 저장하지는 않습니다. (역자 주: 물론 method를 추가하면 저장할 수 있습니다)
주요 클래스
- QNetworkAccessManager [doc.qt.nokia.com]
- QNetworkRequest [doc.qt.nokia.com]
- QNetworkReply [doc.qt.nokia.com]
- QUrl [doc.qt.nokia.com]
.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
- emit downloaded();
- }
- {
- return m_DownloadedData;
- }
사용법
URL에서 Pixmap 불러오기
- 슬롯 선언하기
- 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());
- }

