简述

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. 显示上次缓存过的图片

Qt 之显示网络图片相关推荐

  1. QT+高德地图Web服务API开发—静态地图开发Demo。QT组件提升、QT鼠标事件处理、Qt图片显示与移动、QT网络操作

    说明 在本次项目中,我们使用QT开发框架,高德地图Web服务地图API,完成一个项目Demo,进行一次对QT.对编程的学习. 本系类文章所包含内容包括: 1.QT组件提升 2.QT鼠标事件处理 3.Q ...

  2. cs模式下,显示网络图片一例

    由于在cs模式中 显示图片很简单 picturebox1.image=image.fromfile(filename) 但是filename不能是url,所以不能显示网络图片,怎么办呢? 其实 .ne ...

  3. android显示多个网络图片不显示,Android显示网络图片实例

    本文实例讲述了Android显示网络图片的方法,分享给大家供大家参考.具体方法如下: 一般来说,在Android中显示一张网络图片其实是非常简单的,下面就是一个非常简单的例子: 步骤1: ① 创建你的 ...

  4. windows卸载qt_如何在Qt中显示一个窗口并在关闭后立即将其删除?

    作为一个非常简单的例子,我想在按下按钮时在Qt中显示一个对话框.通常的模式(在我正在申请的应用程序中)似乎如下: class MainWindow { ... private slots: butto ...

  5. Qt 动态实时显示波形图

    Qt 动态实时显示波形图 动态实时显示波形 Qt 动态实时显示波形图 一.获取串口数据 添加头文件 1.实例化一个串口对象 2.设置参数 3.设置端口(以COM12为例) 4.设置波特率(以9600为 ...

  6. qt无法显示图片的原因

    qt无法显示图片: 原因: 1.检查图片路径,将图片路径改为全路径 如图片路径单为./jpg时,找不到图片,为全路径时可以找到 2.检查图片格式,不要乱改图片的后缀(如1.jpg改成1.png),否则 ...

  7. qt客户端显示服务器发送的图片,qt客户端显示服务器发送的图片

    qt客户端显示服务器发送的图片 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. ...

  8. WinForm显示网络图片

    WinForm显示网络图片: pictureBox1.Image = Image.FromStream(System.Net.WebRequest.Create("http://www.go ...

  9. Android TextView显示网络图片

    前言:程序猿真的是有个通病啊,电梯上就在研究电梯的逻辑代码,走路看到红绿灯也会去研究算法,今天心情不错,于是就发了一个说说,发现某q空间中显示了我发的说说,但是我发的笑脸跟哭脸表情由于网络慢,很久才加 ...

  10. Qt开发 — 显示gif动画

    Qt开发 - 显示gif动画 Qt 中,静态图片 PNG,JPG 等可以用其创建 QPixmap,调用 QLabel::setPixmap() 来显示,但是能够具有动画的 GIF 却不能这么做,要在 ...

最新文章

  1. C和指针之实现可变参数函数编译出现expanded from macro ‘va_arg‘ #define va_arg(ap, type) 解决办法
  2. 开源短地址_如何在短短5分钟内完成您的第一个开源贡献
  3. Winform 的一个多线程绑定DataGrid数据源的例子
  4. 夯实基础,彻底掌握js的核心技术(四):ES5、ES6对象方法详解
  5. 脉冲神经网络的开发公司AI-CTX
  6. 优化springboot
  7. [转载]SVN使用教程
  8. C#下的Raw Socket编程实现网络封包监视
  9. 程序员让开,硅谷将是物理学家的天下,薪水高得离谱
  10. 代码管理学:如何给新员工安排工作
  11. Rufus制作USB启动盘
  12. 移动端后台管理系统框架
  13. 代号记忆之数字和英文总结
  14. U盘再次中毒——U盘文件消失却占内存
  15. c++7-1 无符号整数的内部结构 - C/C++ 指针及引用
  16. Mysql命令insert into:向表中插入数据(记录)
  17. 高性能处理器架构与编程实验(基础实验2:openEuler系统环境实验)
  18. 【基于uml高校新闻发布管理系统】
  19. 如何在sql内写循环语句
  20. python学习总结7 - 输入与输出【格式化字符串及读写文件】

热门文章

  1. 独家下载!《Java工程师成神之路(基础篇)》
  2. 爱荷华州立大学计算机学院,爱荷华州立大学最新qs世界排名
  3. Selenium系列教程 - AutoIt命令行参数
  4. Photoshop(PS)CC2020安装教程【64位】
  5. Sublime——让SublimeText换行的时候不拆散一个单词或者代码
  6. python下载动作电影_Python爬虫实战之取电影天堂,,新手练手项目
  7. H5使用photo-sphere-viewer.js实现360°全景
  8. python和c 情侣网名_超可爱超有趣的情侣ID
  9. 文本主题模型之LDA在搜狐新闻数据集上的实践
  10. 2019哪里可以进行高层次人才扶持政策申报?