从 QNetworkAccessManager 下载图像
Download image from QNetworkAccessManager
我看到另一个帖子在谈论这个,但我的图像显示不成功。
目前,我正在这样下载我的图片:
void MyClass::imgHandle() {
QNetworkAccessManager *nam = new QNetworkAccessManager(this);
QUrl url(_code.c_str());
QNetworkReply* reply = nam->get(QNetworkRequest(url));
QEventLoop eventLoop;
connect(reply,SIGNAL(finished()),&eventLoop,SLOT(quit()));
eventLoop.exec();
if (reply->error() == QNetworkReply::NoError)
{
QImageReader imageReader(reply);
imageReader.setAutoDetectImageFormat (false);
_img = imageReader.read();
}
}
_code 是根据 Json 解析得到的代码构建的,url 看起来像这样:http://l.yimg.com/a/i/us/we/52/33.gif
_img 是我 class 中的一个 QImage。
在我的另一个 class 中,我这样做了:
int OtherClass::displayWeather()
{
MyClass mC = new MyClass;
mC->exec() // Where I get the code from the Json
QLabel *imgWeather = new QLabel(this);
imgWeather->setPixmap(QPixmap::fromImage(mC->getImg()));
// getImg() return a QImage.
//The QImage created in MyClass.
imgWeather->setGeometry(1700, 0, 120, 120);
}
最后..什么也没有显示!
您应该检查 QImageReader::read
结果:
QImageReader imageReader(reply);
imageReader.setAutoDetectImageFormat(false);
QImage _img = imageReader.read();
if (_img.isNull())
{
qDebug() << imageReader.errorString();
}
在您的情况下,错误是 "Unsupported image format"。
默认情况下 QImageReader
尝试自动检测图像格式,您刚刚通过调用 setAutoDetectImageFormat(false)
禁用了它。删除它,QImageReader
将完成工作。
我看到另一个帖子在谈论这个,但我的图像显示不成功。
目前,我正在这样下载我的图片:
void MyClass::imgHandle() {
QNetworkAccessManager *nam = new QNetworkAccessManager(this);
QUrl url(_code.c_str());
QNetworkReply* reply = nam->get(QNetworkRequest(url));
QEventLoop eventLoop;
connect(reply,SIGNAL(finished()),&eventLoop,SLOT(quit()));
eventLoop.exec();
if (reply->error() == QNetworkReply::NoError)
{
QImageReader imageReader(reply);
imageReader.setAutoDetectImageFormat (false);
_img = imageReader.read();
}
}
_code 是根据 Json 解析得到的代码构建的,url 看起来像这样:http://l.yimg.com/a/i/us/we/52/33.gif
_img 是我 class 中的一个 QImage。
在我的另一个 class 中,我这样做了:
int OtherClass::displayWeather()
{
MyClass mC = new MyClass;
mC->exec() // Where I get the code from the Json
QLabel *imgWeather = new QLabel(this);
imgWeather->setPixmap(QPixmap::fromImage(mC->getImg()));
// getImg() return a QImage.
//The QImage created in MyClass.
imgWeather->setGeometry(1700, 0, 120, 120);
}
最后..什么也没有显示!
您应该检查 QImageReader::read
结果:
QImageReader imageReader(reply);
imageReader.setAutoDetectImageFormat(false);
QImage _img = imageReader.read();
if (_img.isNull())
{
qDebug() << imageReader.errorString();
}
在您的情况下,错误是 "Unsupported image format"。
默认情况下 QImageReader
尝试自动检测图像格式,您刚刚通过调用 setAutoDetectImageFormat(false)
禁用了它。删除它,QImageReader
将完成工作。