Qt之显示网络图片
2016-03-01 16:07
405 查看
简述
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 { // 错误处理-显示错误信息,或显示上一次缓存的图片或叉图。 } }
处理方式
请求返回之后,首先我们必须判断错误码或错误状态,如果没有错误,正常读取数据,显示即可。但对于少数发生错误的情况时,我们可以按照下面的方式进行处理:显示错误信息,或弹出提示框(不太友好)
显示叉图
显示上次缓存过的图片
相关文章推荐
- http和socket简介
- 深入理解HTTP Session
- Linux防火墙之tcpwraps介绍使用
- php和javascript的get和post方式 有人串口转wifi模块httpdclient网页交互通信成功源码2 wifi继电器小黄人软件ypnr
- solr4.9.0本地数据提交异常分析
- 第一行代码-10.5 网络编程的最佳实践
- Application Transport Security has blocked a cleartext HTTP (http://) resource load since it is inse
- 【最大流/费用流】BZOJ1834-[ZJOI2010]network 网络扩容
- [java] 6、获取本地机器网络地址信息
- 国外标杆性的网络综合布线(完美的艺术品)
- java网络编程+通讯协议
- maven3实战之设置HTTP代理
- Android带Cookie的Http请求
- 解决apache启动错误"httpd:Could not reliably determine...
- JavaWeb中的HttpSession对象
- Unix Study之--AIX 6.1配置网络安装服务
- POJ 1149 PIGS 网络流——【论建图的重要性QAQ】
- BP神经网络求解异或问题(Python实现)
- Unix Study之--AIX 6.1配置网络安装服务
- http协议学习系列