我想下載1張圖片並將其保存。這是我到目前爲止:qt - 如何通過http下載和保存圖像?
QCoreApplication a(argc, argv);
QNetworkAccessManager *manager = new QNetworkAccessManager();
QNetworkReply *img = manager->get(QNetworkRequest(QUrl("http://placekitten.com/200/300")));
QImage* img2 = new QImage();
img2->save(img->readAll(), "omg2.png");
但是id不起作用,請幫忙!
編輯: 那也不要工作,我得到 「糟糕」 控制檯:
QNetworkAccessManager *manager = new QNetworkAccessManager();
//connect(manager, SIGNAL(finished(QNetworkReply*)),this, SLOT(replyFinished(QNetworkReply*)));
QNetworkReply *img = manager->get(QNetworkRequest(QUrl("http://placekitten.com/200/300")));
QImage* img2 = new QImage();
img2->loadFromData(img->readAll());
if(img2->isNull())
std::cout << "oops";
img2->save("omg2.png");
編輯: 現在我得到奇怪的錯誤與vtable
,後qmake
錯誤仍然存在:
#include <QtCore/QCoreApplication>
#include <QNetworkAccessManager>
#include <QtNetwork>
#include <QImage>
#include <QPixmap>
#include <iostream>
class omg : public QObject{
Q_OBJECT
public:
void start(){
QNetworkAccessManager *manager = new QNetworkAccessManager();
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
manager->get(QNetworkRequest(QUrl("http://placekitten.com/200/300")));
}
public slots:
void replyFinished(QNetworkReply* reply)
{
//Check for errors first
QImage* img2 = new QImage();
img2->loadFromData(reply->readAll());
if(img2->isNull())
std::cout << "oops";
img2->save("omg2.png");
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
omg *o = new omg();
o->start();
return a.exec();
}
什麼不具體工作? – AJG85 2011-06-08 18:35:30
我沒有在任何文件夾中獲取圖像(項目文件夾或調試/發佈) – aaaomg 2011-06-08 18:39:00
您正在泄漏omg的內存......否則不會看到vtable錯誤,您可能需要爲omg實現虛擬析構函數。 – AJG85 2011-06-08 20:23:10