qt网络访问
来源:互联网 发布:xp电脑网络起动慢 编辑:程序博客网 时间:2024/06/05 00:44
准备工作:
1. 在pro文件中添加网络访问模块:QT +=network;
2. 如果要用到lambda表达式,则要在pro文件中添加QMAKE_CXXFLAGS+=-std=c++0x
基础类:
QNetworkAccessManager:
这个类为Qt访问网络提供了API接口,几乎所有的网络访问都是围绕这个类展开。一个应用程序只要创建一个这样的实例即可。这个实例包含着发送请求的一些通用配置和设置
QNetworkRequest:
这个类包含了要访问的网络节点的信息。包括url,以及服务器的相关地址。QNetworkAccessManager通过调用子函数get(QNetworkRequest rqt);获取request中的信息。并向网络发送一个请求信息。并且每一个请求返回一个QNetworkReply对象。
QNetworkReply:
这个类承载了网络的返回信息。QNetworkAccessManager发出请求信息,网络做出反应,接收到信息后,会触发finished信号,finished信号将返回的信息存储在QNetworkReply中,然后程序员可以通过解析这个reply获取信息。特别要注意的是通过readAll()访问数据只能访问一次,数据随后就会被清除
Qt的网络访问机制:
Qt的网络访问是异步的,它的网络请求并不会打断主线程的运作。但是这个特点也要求我们需要主动去管理网络的反馈信息。常用的方法就是建立信号槽,将网络返回的信息放在槽函数中进行处理。
简单示例:访问某个网站获取天气信息,并在debug窗口中输出
QNetworkAccessManager*manager=newQNetworkAccessManager(this);
QNetworkRequestrequest;
qDebug()<<"testbegin";
connect(manager,&QNetworkAccessManager::finished,[=](QNetworkReply*reply_temp){
qDebug()<<reply_temp;
qDebug()<<reply_temp->readAll();
reply_temp->deleteLater();
});
request.setUrl(QUrl("http://api.openweathermap.org/data/2.5/weather?q=Beijing,cn&mode=json&units=metric&lang=zh_cn"));
QNetworkReply *reply=manager->get(request);
- qt网络访问
- Qt使用系统代理访问网络
- Qt中网络访问——代理设置
- Qt 网络
- 网络访问
- Qt 学习之路 2(65):访问网络(1)
- Qt 学习之路 2(66):访问网络(2)
- Qt 学习之路 2(67):访问网络(3)
- Qt 学习之路 2(68):访问网络(4)
- QT文件目录访问
- qt访问mysql
- Qt 访问 MySQL
- QT访问Mysql数据库
- Qt 访问 MySQL
- QT:Qt 网络编程基础
- QT网络模块
- qt网络编程
- Qt网络模块简介
- 配置本地yum源
- SOAP webserivce 和 RESTful webservice 对比及区别
- 学习编程语言
- vc++ 共享内存
- 一.Java编程基础(一)
- qt网络访问
- 1. How to review the version of Linux
- 如何设计一个好的RESTful开放API平台
- Linux启动流程一览图
- 堆和栈的区别
- 重新认识javascript(五)
- LeetCode正则表达式-Regular Expression Matching
- Volly框架解析!!
- 在eclipse LDT(Koneki)中搭建quick-cocos2d-x的lua开发环境