Download Data from URL/de: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
[[Category:snippets]] | [[Category:snippets]] | ||
[[Category:HowTo]] | |||
[[Category:German]] | |||
[toc align_right= | [toc align_right="yes" depth="2"] | ||
'''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 9: | ||
= Daten von URL herunterladen = | = Daten von URL herunterladen = | ||
Der folgende Code-Schnippsel demonstriert, wie Daten von einer URL als | Der folgende Code-Schnippsel demonstriert, wie Daten von einer URL als "QByteArray":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. | ||
Wird beispielsweise ein Bild heruntergeladen, kann es mit Hilfe der "loadFromData()":http://doc.qt.io/qt-5.0/qtgui/qimage.html#loadFromData-2 Funktion in ein "QPixmap":http://doc.qt.io/qt-5.0/qtgui/qpixmap.html oder "QImage":http://doc.qt.io/qt-5.0/qtgui/qimage.html 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 16: | ||
== Wichtige Klassen == | == Wichtige Klassen == | ||
* | * "QNetworkAccessManager":http://doc.qt.io/qt-5.0/qtnetwork/qnetworkaccessmanager.html | ||
* | * "QNetworkRequest":http://doc.qt.io/qt-5.0/qtnetwork/qnetworkrequest.html | ||
* | * "QNetworkReply":http://doc.qt.io/qt-5.0/qtnetwork/qnetworkreply.html | ||
* | * "QUrl":http://doc.qt.io/qt-5.0/qtcore/qurl.html | ||
== .pro Datei == | == .pro Datei == | ||
<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> | <code> | ||
#ifndef FILEDOWNLOADER_H | |||
#define FILEDOWNLOADER_H | |||
#include | #include <QObject> | ||
#include <QByteArray> | |||
#include <QNetworkAccessManager> | |||
#include <QNetworkRequest> | |||
#include <QNetworkReply> | |||
class FileDownloader : public QObject | 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: | private: | ||
Line 43: | Line 68: | ||
}; | }; | ||
#endif // FILEDOWNLOADER_H | #endif // FILEDOWNLOADER_H | ||
</code> | |||
== filedownloader.cpp == | == filedownloader.cpp == | ||
<code> | <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() | |||
{ | |||
} | |||
void FileDownloader::fileDownloaded(QNetworkReply''' pReply) | |||
{ | |||
m_DownloadedData = pReply->readAll(); | |||
//emit a signal | |||
pReply->deleteLater(); | |||
emit downloaded(); | |||
} | |||
QByteArray FileDownloader::downloadedData() const | QByteArray FileDownloader::downloadedData() const | ||
{ | |||
return m_DownloadedData; | |||
} | |||
</code> | |||
= Verwendung = | = Verwendung = | ||
Line 61: | Line 109: | ||
== Pixmap von URL laden == | == Pixmap von URL laden == | ||
* Slot deklarieren | * Slot deklarieren | ||
<code> | |||
private slots: | |||
void loadImage(); | 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())); | 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()); | |||
} |
Revision as of 11:08, 25 February 2015
[toc align_right="yes" depth="2"]
German English Български 한국어فارسی
Daten von URL herunterladen
Der folgende Code-Schnippsel demonstriert, wie Daten von einer URL als "QByteArray":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. Wird beispielsweise ein Bild heruntergeladen, kann es mit Hilfe der "loadFromData()":http://doc.qt.io/qt-5.0/qtgui/qimage.html#loadFromData-2 Funktion in ein "QPixmap":http://doc.qt.io/qt-5.0/qtgui/qpixmap.html oder "QImage":http://doc.qt.io/qt-5.0/qtgui/qimage.html konvertiert werden.
Beachte, dass obwohl der Name der Klasse FileDownloader ist, the heruntergeladenen Daten nicht als Datei auf der Festplatte gespeichert werden.
Wichtige Klassen
- "QNetworkAccessManager":http://doc.qt.io/qt-5.0/qtnetwork/qnetworkaccessmanager.html
- "QNetworkRequest":http://doc.qt.io/qt-5.0/qtnetwork/qnetworkrequest.html
- "QNetworkReply":http://doc.qt.io/qt-5.0/qtnetwork/qnetworkreply.html
- "QUrl":http://doc.qt.io/qt-5.0/qtcore/qurl.html
.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());
}