从网络访问管理器获得的QT显示图像
QT display image obtained from network access manager
我正在尝试显示从使用networkaccess manager发出的get请求中获得的图像。我可以编译,甚至可以运行它。但我无法在Qlabel中显示图像。
QNetworkAccessManager* nam;
void MainWindow::on_pushButton_clicked()
{
nam = new QNetworkAccessManager(this);
QUrl url("http://i.imgur.com/Uw7Fk.jpg");
QNetworkReply* reply = nam->get(QNetworkRequest(url));
if (reply->error() == QNetworkReply::NoError)
{
QImageReader imageReader(reply);
imageReader.setAutoDetectImageFormat (false);
QImage pic = imageReader.read();
ui->label_2->setPixmap(QPixmap::fromImage(pic));
}
}
请告诉我哪里出了问题。
调用QNetworkAccessManager::get()
后,QNetworkReply
中的数据没有立即准备好。调用是异步的,在尝试检索任何数据之前,您需要连接到QNetworkAccessManager的finished()
信号或QNetworkReply的readyRead()
信号。
要同步获取图像,可以使用QEventLoop,如下所示:
QNetworkAccessManager* nam;
void MainWindow::on_pushButton_clicked()
{
nam = new QNetworkAccessManager(this);
QUrl url("http://i.imgur.com/Uw7Fk.jpg");
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);
QImage pic = imageReader.read();
ui->label_2->setPixmap(QPixmap::fromImage(pic));
}
}
相关文章:
- 如何用QT显示图像
- 用QT C 显示新框架
- Qt 显示应用程序(如果当前正在运行)
- QT-显示由MainWindow上QListWidget选择的动画GIF
- 使用Qt显示来自OpenCV的网络摄像头流
- QT显示双重号码,没有指数格式
- 使用Qt显示JPG图像不适用于发布可执行文件
- Qt:显示实时视频,一次一帧
- 使用Qt显示相机图像会出现HIGHGUI错误:V4L/V4L2:VIDIOC_S_CROP
- Qt:显示聊天信息的最佳控制
- Qt显示小部件的一半
- 如何使用 QT/C++ 显示网页
- 如何使用 c++ 和 QT 显示包含动态数据的网页
- 使用Qt显示灰度图像
- Qt:显示来自 QByteArray 的字节
- Qt显示非均匀层次
- 如何使用QT显示图像的一部分
- Mac上的Qt显示符号未在架构x86_64中找到
- qt显示指定地址的内存值
- 我如何在另一个线程Qt显示MessageBox