Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.

Download Data from URL/de: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
(Cleaned up Syntax)
 
(11 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[Category:snippets]]<br />[[Category:HowTo]]<br />[[Category:German]]
[[Category:snippets]]
[[Category:HowTo]]
[[Category:German]]


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


'''German''' [[Download_Data_from_URL|English]] [[Download_Data_from_URL_Bulgarian|Български]] [[Download_Data_from_URL_Korean|한국어]][[Download_Data_from_URL_Persian|فارسی]]
'''German''' [[Download_Data_from_URL|English]] [[Download_Data_from_URL_Bulgarian|Български]] [[Download_Data_from_URL_Korean|한국어]][[Download_Data_from_URL_Persian|فارسی]]
Line 7: Line 8:
= Daten von URL herunterladen =
= Daten von URL herunterladen =


Der folgende Code-Schnippsel demonstriert, wie Daten von einer URL als &quot;QByteArray&amp;quot;:http://doc.qt.io/qt-5.0/qtcore/qbytearray.html heruntergeladen werden können. Die heruntergeladenen Daten können dann entweder als Datei gespeichert oder in ein passendes Objekt konvertiert werden.<br />Wird beispielsweise ein Bild heruntergeladen, kann es mit Hilfe der &quot;loadFromData()&quot;:http://doc.qt.io/qt-5.0/qtgui/qimage.html#loadFromData-2 Funktion in ein &quot;QPixmap&amp;quot;:http://doc.qt.io/qt-5.0/qtgui/qpixmap.html oder &quot;QImage&amp;quot;:http://doc.qt.io/qt-5.0/qtgui/qimage.html konvertiert werden.
Der folgende Code-Schnippsel demonstriert, wie Daten von einer URL als [http://doc.qt.io/qt-5.0/qtcore/qbytearray.html QByteArray] heruntergeladen werden können. Die heruntergeladenen Daten können dann entweder als Datei gespeichert oder in ein passendes Objekt konvertiert werden.
Wird beispielsweise ein Bild heruntergeladen, kann es mit Hilfe der [http://doc.qt.io/qt-5.0/qtgui/qimage.html#loadFromData-2 loadFromData()] Funktion in ein [http://doc.qt.io/qt-5.0/qtgui/qpixmap.html QPixmap] oder [http://doc.qt.io/qt-5.0/qtgui/qimage.html QImage] konvertiert werden.


Beachte, dass obwohl der Name der Klasse FileDownloader ist, the heruntergeladenen Daten nicht als Datei auf der Festplatte gespeichert werden.
Beachte, dass obwohl der Name der Klasse FileDownloader ist, the heruntergeladenen Daten nicht als Datei auf der Festplatte gespeichert werden.
Line 13: Line 15:
== Wichtige Klassen ==
== Wichtige Klassen ==


* &quot;QNetworkAccessManager&amp;quot;:http://doc.qt.io/qt-5.0/qtnetwork/qnetworkaccessmanager.html
* [http://doc.qt.io/qt-5.0/qtnetwork/qnetworkaccessmanager.html QNetworkAccessManager]
* &quot;QNetworkRequest&amp;quot;:http://doc.qt.io/qt-5.0/qtnetwork/qnetworkrequest.html
* [http://doc.qt.io/qt-5.0/qtnetwork/qnetworkrequest.html QNetworkRequest]
* &quot;QNetworkReply&amp;quot;:http://doc.qt.io/qt-5.0/qtnetwork/qnetworkreply.html
* [http://doc.qt.io/qt-5.0/qtnetwork/qnetworkreply.html QNetworkReply]
* &quot;QUrl&amp;quot;:http://doc.qt.io/qt-5.0/qtcore/qurl.html
* [http://doc.qt.io/qt-5.0/qtcore/qurl.html QUrl]


== .pro Datei ==
== .pro Datei ==


<code><br />QT ''= network<br /></code><br />Für Symbian Geräte muss der Netzwerkdienst hinzugefügt werden.<br /><code><br />symbian:TARGET.CAPABILITY''= NetworServices<br /></code>
<code>
QT += network
</code>
Für Symbian Geräte muss der Netzwerkdienst hinzugefügt werden.
<code>
symbian:TARGET.CAPABILITY+= NetworServices
</code>


== filedownloader.h ==
== filedownloader.h ==


<code><br />#ifndef FILEDOWNLOADER_H<br />#define FILEDOWNLOADER_H
<code>
#ifndef FILEDOWNLOADER_H
#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;
#include <QObject>
#include <QByteArray>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>


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


private:
private:
Line 43: Line 67:
};
};


#endif // FILEDOWNLOADER_H<br /></code>
#endif // FILEDOWNLOADER_H
</code>


== filedownloader.cpp ==
== filedownloader.cpp ==


<code><br />#include &quot;filedownloader.h&amp;quot;
<code>
#include "filedownloader.h"
 
FileDownloader::FileDownloader(QUrl imageUrl, QObject *parent) :
QObject(parent)
{
connect(&m_WebCtrl, SIGNAL (finished(QNetworkReply*)),
SLOT (fileDownloaded(QNetworkReply*)));
 
QNetworkRequest request(imageUrl);
m_WebCtrl.get(request);
}
 
FileDownloader::~FileDownloader()
{
 
}


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


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


= Verwendung =
= Verwendung =
Line 61: Line 108:
== Pixmap von URL laden ==
== Pixmap von URL laden ==


* Slot deklarieren<br /><code><br />private slots:
* Slot deklarieren
<code>
private slots:


void loadImage();<br /></code><br />* '''downloaded()''' Signal mit Slot verbinden<br /><code><br />QUrl imageUrl(&quot;http://qt.nokia.com/logo.png&amp;quot;);<br />m_pImgCtrl = new FileDownloader(imageUrl, this);
void loadImage();
</code>
* '''downloaded()''' Signal mit Slot verbinden
<code>
QUrl imageUrl("http://qt.nokia.com/logo.png");
m_pImgCtrl = new FileDownloader(imageUrl, this);


connect(m_pImgCtrl, SIGNAL (downloaded()), SLOT (loadImage()));<br /></code><br />* QPixmap von den heruntergeladenen Daten laden<br /><code><br />void MainWindow::loadImage()<br />{<br /> QPixmap buttonImage;<br /> buttonImage.loadFromData(m_pImgCtrl-&gt;downloadedData());<br />}
connect(m_pImgCtrl, SIGNAL (downloaded()), SLOT (loadImage()));
</code>
* QPixmap von den heruntergeladenen Daten laden
<code>
void MainWindow::loadImage()
{
QPixmap buttonImage;
buttonImage.loadFromData(m_pImgCtrl->downloadedData());
}

Latest revision as of 17:45, 23 January 2016


German English Български 한국어فارسی

Daten von URL herunterladen

Der folgende Code-Schnippsel demonstriert, wie Daten von einer URL als QByteArray heruntergeladen werden können. Die heruntergeladenen Daten können dann entweder als Datei gespeichert oder in ein passendes Objekt konvertiert werden. Wird beispielsweise ein Bild heruntergeladen, kann es mit Hilfe der loadFromData() Funktion in ein QPixmap oder QImage konvertiert werden.

Beachte, dass obwohl der Name der Klasse FileDownloader ist, the heruntergeladenen Daten nicht als Datei auf der Festplatte gespeichert werden.

Wichtige Klassen

.pro Datei

QT += network

Für Symbian Geräte muss der Netzwerkdienst hinzugefügt werden.

symbian:TARGET.CAPABILITY+= NetworServices

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*)),
 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;
}

Verwendung

Pixmap von URL laden

  • Slot deklarieren
private slots:

void loadImage();
  • downloaded() Signal mit Slot verbinden
QUrl imageUrl("http://qt.nokia.com/logo.png");
m_pImgCtrl = new FileDownloader(imageUrl, this);

connect(m_pImgCtrl, SIGNAL (downloaded()), SLOT (loadImage()));
  • QPixmap von den heruntergeladenen Daten laden

void MainWindow::loadImage() {

QPixmap buttonImage;
buttonImage.loadFromData(m_pImgCtrl->downloadedData());

}