Download Data from URL/ko: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
No edit summary
Line 1: Line 1:
'''English''' [[Download Data from URL Bulgarian|Български]] [[Download Data from URL Korean|한국어]]
[[Category:snippets]]<br />[[Category:HowTo]]


=URL에서 데이터 다운로드받기=
[toc align_right=&quot;yes&amp;quot; depth=&quot;2&amp;quot;]


아래 코드는 어떻게 하면 [http://ko.wikipedia.org/wiki/URL <span class="caps">URL</span>] ''[ko.wikipedia.org]'' 로부터 자료를 다운로드 받아 [http://doc.qt.io/qt-5.0/qtcore/qbytearray.html QByteArray] ''[qt.io]'' 에 저장할 수 있는지를 보여주고 있습니다.<br /> 다운로드된 자료는 파일로 저장할 수도 있고, 적절한 객체(object)의 형태로 전환(convert)할 수도 있습니다. 예를 들어, 만약 그림을 다운로드하였다면, 이를 각각 객체의 [http://doc.qt.io/qt-5.0/qtgui/qimage.html#loadFromData-2 loadFromData()] ''[qt.io]'' 메서드를 이용하여 [http://doc.qt.io/qt-5.0/qtgui/qpixmap.html QPixmap] ''[qt.io]'' 혹은 [http://doc.qt.io/qt-5.0/qtgui/qimage.html QImage] ''[qt.io]'' 로 전환할 수 있습니다.
'''English''' [[Download_Data_from_URL_Bulgarian|Български]] [[Download_Data_from_URL_Korean|한국어]]


예제 클래스 “FileDownloader“의 이름이 ‘File-Downloader’이지만, 실제 다운로드된 데이터를 파일로 저장하지는 않습니다. (역자 주: 물론 method를 추가하면 저장할 수 있습니다)
= URL에서 데이터 다운로드받기 =


==주요 클래스==
아래 코드는 어떻게 하면 &quot;URL&amp;quot;:http://ko.wikipedia.org/wiki/URL 로부터 자료를 다운로드 받아 &quot;QByteArray&amp;quot;:http://doc.qt.io/qt-5.0/qtcore/qbytearray.html 에 저장할 수 있는지를 보여주고 있습니다.<br />다운로드된 자료는 파일로 저장할 수도 있고, 적절한 객체(object)의 형태로 전환(convert)할 수도 있습니다. 예를 들어, 만약 그림을 다운로드하였다면, 이를 각각 객체의 &quot;loadFromData()&quot;:http://doc.qt.io/qt-5.0/qtgui/qimage.html#loadFromData-2 메서드를 이용하여 &quot;QPixmap&amp;quot;:http://doc.qt.io/qt-5.0/qtgui/qpixmap.html 혹은 &quot;QImage&amp;quot;:http://doc.qt.io/qt-5.0/qtgui/qimage.html 로 전환할 수 있습니다.


* [http://doc.qt.io/qt-5.0/qtnetwork/qnetworkaccessmanager.html QNetworkAccessManager] ''[qt.io]''
예제 클래스 &quot;FileDownloader&amp;quot;의 이름이 'File-Downloader'이지만, 실제 다운로드된 데이터를 파일로 저장하지는 않습니다. (역자 주: 물론 method를 추가하면 저장할 수 있습니다)
* [http://doc.qt.io/qt-5.0/qtnetwork/qnetworkrequest.html QNetworkRequest] ''[qt.io]''
* [http://doc.qt.io/qt-5.0/qtnetwork/qnetworkreply.html QNetworkReply] ''[qt.io]''
* [http://doc.qt.io/qt-5.0/qtcore/qurl.html QUrl] ''[qt.io]''


==.pro 파일==
== 주요 클래스 ==


만약 심비안(Symbian) 장치에 네트워크 기능을 추가하려면 다음 코드를 추가해야 합니다.
* &quot;QNetworkAccessManager&amp;quot;:http://doc.qt.io/qt-5.0/qtnetwork/qnetworkaccessmanager.html
* &quot;QNetworkRequest&amp;quot;:http://doc.qt.io/qt-5.0/qtnetwork/qnetworkrequest.html
* &quot;QNetworkReply&amp;quot;:http://doc.qt.io/qt-5.0/qtnetwork/qnetworkreply.html
* &quot;QUrl&amp;quot;:http://doc.qt.io/qt-5.0/qtcore/qurl.html


==filedownloader.h==
== .pro 파일 ==


==filedownloader.cpp==
<code><br />QT ''= network<br /></code>
<br />만약 심비안(Symbian) 장치에 네트워크 기능을 추가하려면 다음 코드를 추가해야 합니다.
<br /><code><br />symbian:TARGET.CAPABILITY''= NetworkServices<br /></code>


=사용법=
== filedownloader.h ==


==URL에서 Pixmap 불러오기==
<code><br />#ifndef FILEDOWNLOADER_H<br />#define FILEDOWNLOADER_H
 
#include &lt;QObject&amp;gt;<br />#include &lt;QByteArray&amp;gt;<br />#include &lt;QNetworkAccessManager&amp;gt;<br />#include &lt;QNetworkRequest&amp;gt;<br />#include &lt;QNetworkReply&amp;gt;
 
class FileDownloader : public QObject<br />{<br /> Q_OBJECT<br />public:<br /> explicit FileDownloader(QUrl imageUrl, QObject '''parent = 0);
<br /> virtual ~FileDownloader();
<br /> QByteArray downloadedData() const;
<br />signals:<br /> void downloaded();
<br />private slots:
<br /> void fileDownloaded(QNetworkReply''' pReply);
 
private:
 
QNetworkAccessManager m_WebCtrl;
 
QByteArray m_DownloadedData;
 
};
 
#endif // FILEDOWNLOADER_H<br /></code>
 
== filedownloader.cpp ==
 
<code><br />#include &quot;filedownloader.h&amp;quot;
 
FileDownloader::FileDownloader(QUrl imageUrl, QObject '''parent) :<br /> QObject(parent)<br />{<br /> connect(&amp;m_WebCtrl, SIGNAL (finished(QNetworkReply*)),<br /> SLOT (fileDownloaded(QNetworkReply*)));
<br /> QNetworkRequest request(imageUrl);<br /> m_WebCtrl.get(request);<br />}
<br />FileDownloader::~FileDownloader()<br />{
<br />}
<br />void FileDownloader::fileDownloaded(QNetworkReply''' pReply)<br />{<br /> m_DownloadedData = pReply-&gt;readAll();<br /> //emit a signal<br /> pReply-&gt;deleteLater()<br /> emit downloaded();<br />}
 
QByteArray FileDownloader::downloadedData() const<br />{<br /> return m_DownloadedData;<br />}<br /></code>
 
= 사용법 =
 
== URL에서 Pixmap 불러오기 ==


* 슬롯 선언하기
* 슬롯 선언하기


* 시그널 *downloaded()*를 슬롯에 연결하기
<code><br />private slots:


* 다운로드된 데이터에서 QPixmap 읽어들이기
void loadImage();<br /></code>


===Categories:===
* 시그널 *downloaded()'''를 슬롯에 연결하기
<br /><code><br />QUrl imageUrl(&quot;http://qt.nokia.com/logo.png&amp;quot;);<br />m_pImgCtrl = new FileDownloader(imageUrl, this);
<br />connect(m_pImgCtrl, SIGNAL (downloaded()), SLOT (loadImage()));<br /></code>
<br />''' 다운로드된 데이터에서 QPixmap 읽어들이기


* [[:Category:HowTo|HowTo]]
<code><br />void MainWindow::loadImage()<br />{<br /> QPixmap buttonImage;<br /> buttonImage.loadFromData(m_pImgCtrl-&gt;downloadedData());<br />}<br /></code>
* [[:Category:snippets|snippets]]

Revision as of 10:27, 24 February 2015


[toc align_right="yes&quot; depth="2&quot;]

English Български 한국어

URL에서 데이터 다운로드받기

아래 코드는 어떻게 하면 "URL&quot;:http://ko.wikipedia.org/wiki/URL 로부터 자료를 다운로드 받아 "QByteArray&quot;:http://doc.qt.io/qt-5.0/qtcore/qbytearray.html 에 저장할 수 있는지를 보여주고 있습니다.
다운로드된 자료는 파일로 저장할 수도 있고, 적절한 객체(object)의 형태로 전환(convert)할 수도 있습니다. 예를 들어, 만약 그림을 다운로드하였다면, 이를 각각 객체의 "loadFromData()":http://doc.qt.io/qt-5.0/qtgui/qimage.html#loadFromData-2 메서드를 이용하여 "QPixmap&quot;:http://doc.qt.io/qt-5.0/qtgui/qpixmap.html 혹은 "QImage&quot;:http://doc.qt.io/qt-5.0/qtgui/qimage.html 로 전환할 수 있습니다.

예제 클래스 "FileDownloader&quot;의 이름이 'File-Downloader'이지만, 실제 다운로드된 데이터를 파일로 저장하지는 않습니다. (역자 주: 물론 method를 추가하면 저장할 수 있습니다)

주요 클래스

.pro 파일

<br />QT ''= network<br />


만약 심비안(Symbian) 장치에 네트워크 기능을 추가하려면 다음 코드를 추가해야 합니다.


<br />symbian:TARGET.CAPABILITY''= NetworkServices<br />

filedownloader.h

<br />#ifndef FILEDOWNLOADER_H<br />#define FILEDOWNLOADER_H

#include &lt;QObject&amp;gt;<br />#include &lt;QByteArray&amp;gt;<br />#include &lt;QNetworkAccessManager&amp;gt;<br />#include &lt;QNetworkRequest&amp;gt;<br />#include &lt;QNetworkReply&amp;gt;

class FileDownloader : public QObject<br />{<br /> Q_OBJECT<br />public:<br /> explicit FileDownloader(QUrl imageUrl, QObject '''parent = 0);
<br /> virtual ~FileDownloader();
<br /> QByteArray downloadedData() const;
<br />signals:<br /> void downloaded();
<br />private slots:
<br /> void fileDownloaded(QNetworkReply''' pReply);

private:

QNetworkAccessManager m_WebCtrl;

QByteArray m_DownloadedData;

};

#endif // FILEDOWNLOADER_H<br />

filedownloader.cpp

<br />#include &quot;filedownloader.h&amp;quot;

FileDownloader::FileDownloader(QUrl imageUrl, QObject '''parent) :<br /> QObject(parent)<br />{<br /> connect(&amp;m_WebCtrl, SIGNAL (finished(QNetworkReply*)),<br /> SLOT (fileDownloaded(QNetworkReply*)));
<br /> QNetworkRequest request(imageUrl);<br /> m_WebCtrl.get(request);<br />}
<br />FileDownloader::~FileDownloader()<br />{
<br />}
<br />void FileDownloader::fileDownloaded(QNetworkReply''' pReply)<br />{<br /> m_DownloadedData = pReply-&gt;readAll();<br /> //emit a signal<br /> pReply-&gt;deleteLater()<br /> emit downloaded();<br />}

QByteArray FileDownloader::downloadedData() const<br />{<br /> return m_DownloadedData;<br />}<br />

사용법

URL에서 Pixmap 불러오기

  • 슬롯 선언하기
<br />private slots:

void loadImage();<br />
  • 시그널 *downloaded()를 슬롯에 연결하기


<br />QUrl imageUrl(&quot;http://qt.nokia.com/logo.png&amp;quot;);<br />m_pImgCtrl = new FileDownloader(imageUrl, this);
<br />connect(m_pImgCtrl, SIGNAL (downloaded()), SLOT (loadImage()));<br />


다운로드된 데이터에서 QPixmap 읽어들이기

<br />void MainWindow::loadImage()<br />{<br /> QPixmap buttonImage;<br /> buttonImage.loadFromData(m_pImgCtrl-&gt;downloadedData());<br />}<br />