Qt之显示网络图片
简述
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
{
// 错误处理-显示错误信息,或显示上一次缓存的图片或叉图。
}
}
处理方式
请求返回之后,首先我们必须判断错误码或错误状态,如果没有错误,正常读取数据,显示即可。但对于少数发生错误的情况时,我们可以按照下面的方式进行处理:
- 显示错误信息,或弹出提示框(不太友好)
- 显示叉图
- 显示上次缓存过的图片
Qt之显示网络图片的更多相关文章
- qt QLabel 显示网络图片
在网上试了很多代码都不能使用,自己写了写代码. 直接上代码 Codevoid QMusicLogo::setNetworkPic(const QString &szUrl) { QUrl ur ...
- Qt之显示网络图片(可以改成升级模块)
http://blog.csdn.net/u011012932/article/details/50773382
- Android 本地加载网页与显示网络图片
有时候需要在应用程序里展示一些网页,但是需求里又明确指出,不允许打开系统浏览器,显然也不可能去编写一个浏览器出来,这时就需要使用 WebView控件,借助它我们就可以在自己的应用程序里嵌入一个浏览器, ...
- GB2312、GBK和UTF-8三种编码以及QT中文显示乱码问题
1.GB2312.GBK和UTF-8三种编码的简要说明 GB2312.GBK和UTF-8都是一种字符编码,除此之外,还有好多字符编码.只是对于我们中国人的应用来说,用这三种编码 比较多.简单的说一下, ...
- android中使用afinal一行源码显示网络图片
下面代码是关于android中使用afinal一行显示网络图片的代码. public class DemoActivity extends FinalActivity { @Override publ ...
- Android 显示网络图片
本文内容 环境 演示显示网络图片 本文演示 Android 如何显示网络图片.学习一门新的语言,最好办法就先了解该语言的语法和库,以及设计思想,再着手现实一些常用功能,毕竟以后用该语言是要写程序的,而 ...
- 学习Android之SimpleAdapter显示网络图片
效果图: 此程序基本的知识点是:SimpleAdapter本身是不支持网络图片的, 假设在Map.put(a,b)中 b为一个Bitmap,程序不会报红色字体,而是在控制台输出绿色的字体,例如以下 0 ...
- QT中显示GIF图片
在QT中要显示GIF图片,不能通过单单的添加部件来完成. 还需要手动的编写程序. 工具:QT Creator 新建一个工程,我们先在designer中,添加一个QLabel部件. 如下图: 将QLab ...
- Qt图片显示效率的比较 转
转http://blog.sina.com.cn/s/blog_5c70dfc80100r257.html 在Qt中处理图片一般都要用到QImage类,但是QImage的对象不能够直接显示出来,要想能 ...
随机推荐
- YARN的 AM与RM通信,申请资源分配过程
AppMaster向RM请求资源 MRAppMaster :serviceinit // service to allocate containers from RM (if non-uber) or ...
- 如何做到尽可能不使用庞大的jQuery
jQuery 是现在最流行的 JavaScript 工具库. 据统计,目前全世界 57.3% 的网站使用它.也就是说,10 个网站里面,有 6 个使用 jQuery.如果只考察使用工具库的网站,这个比 ...
- Firefly卡牌手游《暗黑世界V1.5》服务器端源码+GM管理后台源码
http://www.9miao.com/content-6-304.html Firefly卡牌手游<暗黑世界V1.5>服务器端源码+GM管理后台源码 关于<暗黑世界V1.5> ...
- 网格导入设置 Import settings for Meshes
原地址:http://game.ceeger.com/Components/FBXImporter-Model.html The Import Settings for a model file wi ...
- Ruby中的语句中断和返回
李哲 - APRIL 28, 2015 return,break,next 这几个关键字的使用都涉及到跳出作用域的问题,而他们的不同 则在于不同的关键字跳出去的目的作用域的不同,因为有代码块则导致有一 ...
- MJRefresh插件引起的错误
添加的头部或者尾部刷新,离开这个界面的时候需要移除 - (void)dealloc { [_tableView removeHeader];} 不同版本的处理的方式不同 报的错误: 类的一个实例 ...
- UVA 10635 Prince and Princess
题意描述:有两个长度分别为p+1和q+1的序列,每个元素中的各个元素互不相同.都是1~n^2之间的整数,求A和B的最长公共子序列.(2<=n<=250,1<=p,q<=n^2) ...
- C# 给数据库传入当前时间
DateTime time=DateTime.Now; // 存储过程中用一个 @addTime DateTime --接收DateTime 类型接收
- java+内存分配及变量存储位置的区别[转]
原文来自:http://blog.csdn.net/rj042/article/details/6871030#comments Java内存分配与管理是Java的核心技术之一,之前我们曾介绍过Jav ...
- API 版本控制
http://www.oschina.net/translate/introduction-to-web-api-versioning