Bild aus dem Internet anzeigen?
Bild aus dem Internet anzeigen?
hey,
ich bin noch recht neu in qt.
beschäftige mich jetzt vielleicht 3 Tage damit.
Jetzt wollte ich auf einem Dialog ein Bild aus dem Internet anzeigen.
Gibt es dafür eine spezielle Klasse oder muss ich es erst Downloaden?
hoffe ihr könnt mir helfen...
blubsy
ich bin noch recht neu in qt.
beschäftige mich jetzt vielleicht 3 Tage damit.
Jetzt wollte ich auf einem Dialog ein Bild aus dem Internet anzeigen.
Gibt es dafür eine spezielle Klasse oder muss ich es erst Downloaden?
hoffe ihr könnt mir helfen...
blubsy
Eine Möglichkeit währe es, ein QLabel zu benutzen und darin mit HTML (<img src="http:deineWebsite.com/DeinBild.png">) das Bild anzeigen zu lassen aber ob das wirklich effektiv ist (kann unter Umständen sehr lange dauern!)
Gruß
GSoft
Gruß
GSoft
Lerne aus den Fehlern Anderer! Du hast nicht die Zeit sie selbst zu machen.
hey sorry, ich habe schon öfters Bilder in QLabel angezeigt, aber wie ich gerade festgestellt habe, immer nur welche die in der Ressourcen-Datei vorlagen.
Guck dir mal das Beispiel unter dem Index im Qt-Assistant an: HTTP Example
Gruß
GSoft
Guck dir mal das Beispiel unter dem Index im Qt-Assistant an: HTTP Example
Gruß
GSoft
Lerne aus den Fehlern Anderer! Du hast nicht die Zeit sie selbst zu machen.
Hey,
Habe das jetzt das mit QHttp in mein Programm eingebaut.
Bekomme allerdings beim Kompelieren jetzt dieses Fehler:
Es geht um diese Codestelle im Konstruktor:
Habe es eigentlich genau wie in dem Example gemacht nur das das ganze in einer extra Klasse laufen soll,
Ich gebe QHttp dabei über den Konstruktor das parent von der Hauptklasse (da wo das Fenster gesteuert wird) mit.
Ist das falsch? Wie gesagt bin noch net so wirklich lang in QT.
Habe das jetzt das mit QHttp in mein Programm eingebaut.
Bekomme allerdings beim Kompelieren jetzt dieses Fehler:
Code: Alles auswählen
src/WebTest.cpp:23: error: invalid conversion from ‘QHttp*’ to ‘int’
src/WebTest.cpp:23: error: cannot convert ‘const char*’ to ‘const sockaddr*’ for argument ‘2’ to ‘int connect(int, const sockaddr*, socklen_t)’
Code: Alles auswählen
connect(http1, SIGNAL(requestFinished(int, bool)),
this, SLOT(httpRequestFinished(int, bool)));Ich gebe QHttp dabei über den Konstruktor das parent von der Hauptklasse (da wo das Fenster gesteuert wird) mit.
Code: Alles auswählen
Webtest::Webtest(QObject * parent) {
http1 = new QHttp(parent);
}Ist das falsch? Wie gesagt bin noch net so wirklich lang in QT.
Bist du dir sicher das es um diese Zeilen geht? Gib mal den Quelltext des ganzen Konstruktors (besonders die Zeile 23).blubsy hat geschrieben: Es geht um diese Codestelle im Konstruktor:Code: Alles auswählen
connect(http1, SIGNAL(requestFinished(int, bool)), this, SLOT(httpRequestFinished(int, bool)));
Gruß
GSoft
Lerne aus den Fehlern Anderer! Du hast nicht die Zeit sie selbst zu machen.
Code: Alles auswählen
Webtest::Webtest(QObject * parent) {
http1 = new QHttp(parent);
std::cout << "Webtest()" << std::endl;
connect(http1, SIGNAL(requestFinished(int, bool)),
this, SLOT(httpRequestFinished(int, bool)));
}Hier mal die ganze Klasse soweit ich sie bis jetzt habe:
Code: Alles auswählen
Webtest::Webtest(QObject * parent) {
http1 = new QHttp(parent);
std::cout << "Webtest()" << std::endl;
connect(http1, SIGNAL(requestFinished(int, bool)),
this, SLOT(httpRequestFinished(int, bool)));
}
Webtest::Webtest(const Webtest& orig) {
}
Webtest::~Webtest() {
std::cout << "~Webtest()" << std::endl;
}
void Webtest::downloadFile(QString pUrl){
QUrl url(pUrl);
QFileInfo fileInfo(url.path());
QString fileName = fileInfo.fileName();
file = new QFile("temp/"+fileName);
if (!file->open(QIODevice::WriteOnly)) {
std::cout << file->errorString().toStdString() << std::endl;
delete file;
file = 0;
return;
}
http1->setHost(url.host(), url.port() != -1 ? url.port() : 80);
httpRequestAborted = false;
httpGetId = http1->get(url.path(), file);
}
void Webtest::httpRequestFinished(int requestId, bool error)
{
if (httpRequestAborted) {
if (file) {
file->close();
file->remove();
delete file;
file = 0;
}
return;
}
if (requestId != httpGetId)
return;
file->close();
if (error) {
file->remove();
std::cout << http1->errorString().toStdString() << std::endl;
} else {
std::cout << ("Downloaded %1 to current directory") << std::endl;
}
delete file;
file = 0;
}
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
QHttp und QFtp sind deprecated (siehe Doku) - warum verwendest Du veraltete Klassen?
Und da Du wahrscheinlich irgendwo die Hesderdatei sys/socket.h includiert hast gibt es von dort schon eine Funktion connect(). Du musst aber QObject::connect() aufrufen.
Und da Du wahrscheinlich irgendwo die Hesderdatei sys/socket.h includiert hast gibt es von dort schon eine Funktion connect(). Du musst aber QObject::connect() aufrufen.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Da würde mich mal interessieren, wie ich QFtp ersetzen kann durch QNetworkReplay und QNetworkAssistant ersetzen kann, wie es in der Doku steht.
Michael
P.S.
Solange das FTP Example auf QFtp aufbaut, glaube ich nicht an "depricated"!!!
Wo ist das more powerful, bezogen auf Ftp? QFtp ist intuitiv zu benutzen bei den QNetwork* Sachen wird das schon schwieriger. Wenn da jemand ein Beispiel hat, ist das hier herzlich willkommenHowever, for new applications, it is recommended to use QNetworkAccessManager and QNetworkReply, as those classes possess a simpler, yet more powerful API.
Michael
P.S.
Solange das FTP Example auf QFtp aufbaut, glaube ich nicht an "depricated"!!!