博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Qt之显示网络图片
阅读量:5874 次
发布时间:2019-06-19

本文共 1474 字,大约阅读时间需要 4 分钟。

简述

Qt中包含了网络模块-network,我们可以很容易的进行各种网络编程和数据传输,关于network的类很多,其中包含:支持DNS、HTTP、TCP/UDP等众多高级类,可以参考助手。

下面我们先看一个简单地示例:Qt显示一个网络图片。

效果

这里写图片描述

源码

创建按钮及显示图像的标签,连接信号槽。

m_pButton = new QPushButton(this);m_pButton->setText(QStringLiteral("开始下载"));m_pLabel = new QLabel(this);m_pLabel->setFixedSize(140, 140);m_pLabel->setScaledContents(true);connect(m_pButton, SIGNAL(clicked(bool)), this, SLOT(startDownload()));

请求及结果处理,请求完成以后,我们可以去E盘查看下载后的图片。

// 点击按钮,开始请求void MainWindow::startDownload(){    m_pButton->setEnabled(false);    QNetworkRequest request;    request.setUrl(QUrl("http://avatar.csdn.net/6/9/A/1_u011012932.jpg"));    connect(&m_networkManager, SIGNAL(finished(QNetworkReply *)), this, SLOT(replyFinished(QNetworkReply *)));    m_networkManager.get(request);}// 响应结束,进行结果处理-图片显示或错误处理void MainWindow::replyFinished(QNetworkReply *reply){    m_pButton->setEnabled(true);    // 获取响应状态码,200表示正常    // QVariant nCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);    if (reply->error() == QNetworkReply::NoError)    {        QByteArray bytes = reply->readAll();        QPixmap pixmap;        pixmap.loadFromData(bytes);        m_pLabel->setPixmap(pixmap);        // 缓存到本地        QFile file("E:/head.jpg");        if (file.open(QIODevice::Append))            file.write(bytes);        file.close();    }    else    {        // 错误处理-显示错误信息,或显示上一次缓存的图片或叉图。    }}

处理方式

请求返回之后,首先我们必须判断错误码或错误状态,如果没有错误,正常读取数据,显示即可。但对于少数发生错误的情况时,我们可以按照下面的方式进行处理:

  1. 显示错误信息,或弹出提示框(不太友好)
  2. 显示叉图
  3. 显示上次缓存过的图片
你可能感兴趣的文章
51nod 1443 路径和树——最短路生成树
查看>>
17th, Jan 2012 今天的时间表
查看>>
[精华][推荐]CAS SSO 实现单点登录实例源码
查看>>
IIS 部署WCF时遇到这么个错:
查看>>
VSS Teamwork 环境架设[文章汇编集]
查看>>
VC++ 在两个程序中 传递字符串等常量值的方法:使用了 WM_COPYDATA 消息的
查看>>
拓扑资料
查看>>
x86_64平台编译链接汇编程序
查看>>
POJ3126 Prime Path(BFS)
查看>>
VC6.0多线程例程
查看>>
Unity 3D-AR开发-Vuforia教程手册
查看>>
放球问题 组合数学 转自百度百科
查看>>
神经网络的火热
查看>>
视图之一--创建简单的视图
查看>>
for循环实例
查看>>
N1试卷常考词汇总结
查看>>
构建之法阅读笔记(1)
查看>>
POJ 3663:Costume Party
查看>>
主机连接虚拟机 web服务
查看>>
ajaxSubmit的data属性
查看>>