我想下载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