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的对象不能够直接显示出来,要想能 ...
随机推荐
- 浅谈ASP.NET报表控件
OWC似乎使用者居多,但看见有网友在帖中抱怨OWC在使用时需要许可证书,于是将其排除,我可不想BOSS在看报表时弹出一个“没有许可证书”的窗口. 接着找到了ComponentOne的Web chart ...
- linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制)
linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制) 发表于2012//07由feng linux 本身的ugo rwx的权限,对于精确的权限控制很是力不从心的,ac ...
- Ruby中的语句中断和返回
李哲 - APRIL 28, 2015 return,break,next 这几个关键字的使用都涉及到跳出作用域的问题,而他们的不同 则在于不同的关键字跳出去的目的作用域的不同,因为有代码块则导致有一 ...
- [读]剑指offer
研二的开始找工作了,首先祝愿他们都能够找到自己满意的工作.看着他们的身影,自问明年自己这个时候是否可以从容面对呢?心虚不已,赶紧从老严那儿讨来一本<剑指offer>.在此顺便将自己做题所想 ...
- C# 枚举类型操作
//定义一个枚举 public enum Colors { Red, Green, Blue, Yellow }; //根据key找value string name = Enum.GetName(t ...
- Axis2学习的第一天
按照下面,分别建2个工程,一个client(客户端),一个server(服务端) 先实现服务端: 1.编写services.xml文件,该文件是放在aar文件里的\META-INF目录下的: < ...
- C逻辑型变量——时控灯例子
在C99标准颁布之前,我们通常都是用1或者0来表示逻辑的真与假,因此,当我们需要在程序中传递这种逻辑数据时,我们都是用整型数据类型int来表示这种逻辑型数据.然而,使用整型数据类型int来表示逻辑型变 ...
- Android中级之网络数据解析一之xml解析
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! --Comic Sans MS Xml解析具有跨平台性,语言无关性,易操作性,因此广受开发者的欢迎. ...
- Ubuntu刷新DNS
linux刷新dns的缓存方法是: sudo /etc/init.d/nscd restart 如果发现提示命令找不到: sudo: /etc/init.d/nscd: command not fou ...
- mfc Clistctr 单元格嵌入图片(bmp)
示例:http://download.csdn.net/detail/zahxz/4652543 代码: CListCtrl mCtrlist;//列表控件 CImageList m_ImageLis ...