Qt项目天气预报(3) - qt的http编程获取天气数据

【QT项目-天气预报】 / 重写父类的eventFilter的方法// 绘制高低温曲线// 绘制高温曲线// 绘制低温曲线使用方法将当前窗口对象MainWindow作为事件过滤器安装到和上。方法是QObject类的方法,用于安装一个事件过滤器。事件过滤器可以监视和处理指定对象的事件。通过将当前窗口对象作为事件过滤器安装到和上,可以在MainWindow类中的eventFilter方法中对这两个对象的事件进行处理。//参数指定为this,也就是当前窗口对象 MainWindow。 阅读详情

概念


Qt中的HTTP编程主要涉及使用Qt的网络模块来进行HTTP请求和处理HTTP响应。Qt提供了一系列类来处理网络通信,其中最常用的类是 QNetworkAccessManager 、 QNetworkRequest 、 QNetworkReply 以及相关的支持类。

编程实例


以下是一个基本的HTTP编程示例,展示了如何使用Qt发送一个简单的HTTP GET请求并处理响应:

步骤 1: 包含必要的头文件

#include <QCoreApplication>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QObject>
#include <QDebug>

步骤 2: 发送HTTP请求

创建一个 QNetworkAccessManager 对象,并使用它发送HTTP请求。 QNetworkAccessManager 对象会
异步地处理请求,并返回一个 QNetworkReply 对象。


int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QNetworkAccessManager manager;
QNetworkRequest request(QUrl("http://example.com"));
QNetworkReply *reply = manager.get(request);
QObject::connect(reply, &QNetworkReply::finished, [&]() {
if (reply->error()) {
qDebug() << "Error:" << reply->errorString();
return;
}
QString response = reply->readAll();
qDebug() << "Response:" << response;
});
return a.exec();
}

我们使用 QNetworkAccessManager 的 get 方法发送了一个HTTP GET请求到"http://exa
mple.com"。然后,我们连接了 QNetworkReply 对象的 finished 信号到一个lambda函数,该函数在收
到HTTP响应时被调用。

注:
  进行http请求之前要先把  network 添加到pro文件中

获取天气信息的url:


http://t.weather.itboy.net/api/weather/city/101010100

初始化network对象

在 构造函数 中

 //由QNetworkAccessManager 发起request请求:
//QNetworkRequest - 指定请求的url地址
//QNetworkReply网络请求后进行数据读取
    //由QNetworkAccessManager 发起request请求:
    //实例化network对象
    QNetworkAccessManager *manager = new QNetworkAccessManager(this);
    connect(manager, &QNetworkAccessManager::finished,[](){
        qDebug()<<"manager Finnish!";
    });
   QUrl urlItBoy("http://t.weather.itboy.net/api/weather/city/101010100");
   //QNetworkRequest - 指定请求的url地址
   QNetworkRequest res(urlItBoy); //根据网址实例化QUrl对象,再根据这个对象实例化QNetworkRequest对象
   reply = manager->get(res);
   //网络请求后进行信号读取
   connect(reply,&QNetworkReply::finished,this,&Widget::readHttpReply);

http网络请求后进行读取槽函数

//http网络请求后进行读取槽函数
void Widget::readHttpReply()
{
 //大多数服务器网址返回的编码格式是 utf-8,需要进行格式转化
 QByteArray data = reply->readAll();
 qDebug()<<QString::fromUtf8(data); // 将读到utf-8格式的数据转为QString类型进行输出
}

效果演示

如下图,我们通过http编程获取到网页上的数据了

http请求失败错误处理

修改槽函数,添加错误处理

//http网络请求后进行读取槽函数
void Widget::readHttpReply()
{

    int resCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();//404
    qDebug()<<resCode;
    if(reply->error() == QNetworkReply::NoError && resCode == 200){ // 没出错的情况下执行
        //大多数服务器网址返回的编码格式是 utf-8,需要进行格式转化
        QByteArray data = reply->readAll();
        qDebug()<<QString::fromUtf8(data); // 将读到utf-8格式的数据转为QString类型进行输出
    }
    else{
        //qDebug()<<"请求失败"<<reply->errorString();
        QMessageBox msg;
        msg.setWindowTitle("错误");
        msg.setText("网络请求失败!");
        msg.setStyleSheet("QPushButton{color:red};");//设置按钮样式
        msg.setStandardButtons(QMessageBox::Ok); //添加Ok按钮
        msg.exec();// 调用QMessageBox对象
    }
}

效果演示

状态码


服务器对请求的响应中包含一个状态码,它表示请求的成功或失败,以及失败的原因。常见的状态码包括:
200 OK: 请求成功。
404 Not Found: 请求的资源未找到。
500 Internal Server Error: 服务器内部错误。
301 Moved Permanently: 请求的资源已永久移动到新位置。
 

请求成功:200

请求失败:404

Qt天气预报项目 使用qt6 cmake实现的天气预报项目。主要功能: 实时展示城市的基本天气情况,包括温度、风向、空气质量等, 不同的天气情况和空气质量显示不同的图标和背景色, 展示未来天气状况并绘制温度折线图, 可以根据输入的城市名切换城市, 隐藏边框,窗口随鼠标拖拽而移动。 阅读详情

相关推荐

P7 QT项目----会学天气预报

本文摘要介绍了天气预报数据接口解析和软件开发中的网络通信架构。首先展示了一个福州天气预报的JSON接口响应示例,包含温度、天气状况、空气质量等实时数据。接着对比了BS(浏览器-服务器)和CS(客户端-服务器)两种架构的特点与适用场景。文章详细讲解了HTTP协议的基本概念,包括请求响应模型、状态码等核心要素。最后通过Qt编程实例,演示了HTTP请求的实现方法以及JSON数据的生成、解析技术,包括使用QJsonDocument处理嵌套JSON结构和数组数据。这些内容为开发网络应用程序提供了基础技术参考。

H212202165的博客 1059

QT项目—天气预报

qt天气项目

qq_52201535的博客 5387

【QT开发专题-天气预报】14. 请求天气数据

(1) 从零开始实现的一个 HTTP 天气预报 (2) 详细的开发笔记 (3) 提供项目源码

B站-大轮明王讲Qt 1022

QT 实现简单的天气 哈哈

通过上面的代码就可以实现简单的网络请求服务端来展示简单的天气情况,数据源也是在网络上找到的。

houxian1103的博客 1836

QT项目——天气预报

本项目主要涉及 Qt 界面设计、HTTP 通信、JSON 数据解析、自定义控件绘制温湿度曲线、Qt 信号与槽等的应用,通过调用天气预报API解析 JSON 数据获取未来七天的温湿度、风力强度、天气状态等信息,最后显示在Qt UI界面。

wei_Embedded_z的博客 2167

【C++ QT项目5】——基于HTTP与JSON数据流的天气预报界面设计

设计一个天气预报界面,实现对不同城市区域的天气获取与显示,其中主要涉及stylesheet界面美化、HTTP通信、JSON数据解析自定义控件绘制温度多控件及其最终代码整合调试能力。

weixin_46216674的博客 1926

#QT项目实战(天气预报)

if(window.IPCallBack) {IPCallBack({"ip":"123.147.249.72","pro":"重庆市","proCode":"500000","city":"重庆市","cityCode":"500000","region":"渝北区","regionCode":"500112","addr":"重庆市渝北区","regionNames":"","err":""});[]代表的是数组,{}代表的是对象,从最外层开始一层一层往里面剥开,最外层始终是一个"{}"。

byhyf83862547的博客 4325

QT实战项目五(天气预报界面)

JSON)是一种轻量级的数据交换格式。它易于人阅读和编写,同时也易于机器解析和生成。JSON是基于JavaScript的一个子集,尽管它是独立于语言的,且有多种语言支持。JSON常用于网络应用程序中的数据传输,尤其是在Web应用程序中与后端服务器通信。易于阅读和编写:JSON的结构简单、清晰,对人类来说易于阅读和编写;轻量级数据格式:相较于XML等标记语言,JSON更轻量,使用更少的符号,数据体积更小;易于解析和生成:大多数编程语言都提供了解析和生成JSON的内置支持或库;

qq_53918454的博客 1206

QT之http的get请求获取天气信息

一、引言 Qt获取天气信息一般都是通过调用天气服务器的接口来获取的,而接口可以自行网上查找。 本文获取天气信息的接口采用: http://wthrcdn.etouch.cn/weather_mini,请求参数名为city(获取某个城市的天气信息)。请求方式为get请求。 二、实现效果 下拉框选择城市获取天气信息 三、实现步骤 1、添加网络类 Qt的pro文件中添加使用天气接口的网络类,通过http请求数据。 QT += network 2、添加相关头文件 //...

hml111666的博客 2543

Qt获取并显示电池电量和WIFI信号强度

Qt获取并显示电池电量和WIFI信号强度,在win7下可用,其他平台未试,详见我的博客http://blog.youkuaiyun.com/caoshangpa/article/details/51062351

qt获取天气信息,支持输入城市查看

qt获取天气信息,支持输入城市查看

基于QT天气预报项目,推荐初学者练手

本项目基于QT平台开发的一款七天天气预报,一个适合小白练手的项目。

qq_51163115的博客 9777

Python、Selenium实现问卷星自动填写(内含适配个人问卷的方法)

使用Python、Selenium实现问卷星自动填写,内含适配个人问卷的方法。

DaenCode的博客 3837

【QT】QT中http协议和json数据的解析-http获取天气预报

地址: http://t.weather.itboy.net/api/weather/city/xxxxx ,其中xxxxx即为城市代码(数组:用[]来表示,数组里面只能存放相同类型的数据 [1,2,3] [{},{},{}] [键值对,键值对,键值对]json数据:一种数据格式,在计算机前端开发中经常使用这个格式的数据,保存信息很方便。键值对:用键:值表示, 键只能是字符串,值可以是任意合法类型。json数据只能由数组,对象,键值对三种构成。对象:用{}来表示,可以嵌套 {键值对}

qq_62917398的博客 1452

VCS和UVM常用编译选项

VCS编译选项 -full64 在64bit模式下编译、仿真,用于64位操作系统 -j8 指定编译器可以并行编译的进程数为8 -timescale=1ns/1ps 指定仿真时间和精度 +libext+.v+.V+.sv+.svh 识别.v、.sv、.svh等多种格式文件 -sverilog 支持system verilog 编译 -f xxx.lisf 指定包含所有设计文件列表的文件名 -top test 设置顶层模块为test。(指包含.

qq_40571921的博客 9934

Vue3 - 最新实现在线预览Excel文件(xls/xlsx)多种方案,解析打开excel电子表格支持服务器链接在线URL形式、调用后端接口获取二进制文件流、文件地址(vue3实现excel预览)

vue3,预览excel文件,xlsx,xls,vue预览Excel表格,vue在线编辑xls文件,预览和编辑,vue3如何新开一页浏览器打开查看,手机h5页面打开在线EXCEL文档,在弹框中加载预览,在指定模态框中显示,基于Vue的Excel文件预览,加载失败白屏,报错没反应,详细示例代码教程,文件预览下载,nuxt3,excel预览插件,xlsx插件预览,纯前端vue中预览excel表格,接口调用的文件如何预览查看,文件url地址,vue移动端实现excel在线预览,vue移动端H5网页excel预览,

🏆 前端领域优质创作者 1万+

Qt——天气预报项目

1.窗口1:使用水平布局,内包含俩个QLabel类和一个QLineEdit类这里可以设置LineEdit中的提示文字 2.窗口2:使用栅格布局,这个天气图标组件的大小需限制一下 3.窗口3:里面包含一个子窗口,设置子窗口背景样式为橘色子窗口中的组件先垂直布局,后水平布局。最后整体再来一个栅格布局4.窗口4:里面包含6个子窗口。子窗口0401、0402、0406都需要进行栅格布局子窗口0401和0406中的组件是由俩个QLabel类拼接在一起的。 5.最后给4个窗口整体进行垂直布局即可解决方法:重写鼠标点击事

m0_73510889的博客 1543

外向交货单批次赋值的标准姿势:用 BAPI_OUTB_DELIVERY_CHANGE 把 LIPS-CHARG 改得稳、改得干净

摘要: 外向交货单批次赋值涉及严格的业务约束,包括批次管理状态、单据状态、拆分规则等,直接更新表 LIPS 不可取。推荐使用 BAPI_OUTB_DELIVERY_CHANGE 接口,通过标准业务逻辑实现批次修改。关键点包括:区分单批次分配与批次拆分场景,正确设置 ITEM_CONTROL 控制结构,并确保单位/数量数据完整。附可直接执行的ABAP代码示例,实现安全可靠的批次更新流程。 (字数:149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 397

基于QT实现天气预报

本文介绍了基于Qt框架开发的天气预报功能模块,通过调用第三方API获取天气数据并展示未来6天预报。项目采用HTTP网络通信协议,利用JSON解析天气数据,结合Qt信号槽机制实现交互功能。文章详细讲解了CS/BS架构区别、HTTP协议核心概念、Qt网络编程方法以及JSON数据处理技术,为开发跨平台天气应用提供了完整的技术方案。

m0_73606184的博客 1139

基于分水岭分割进行肺癌诊断

近年来,肺癌的发病率和病死率均迅速上升,目前已居所有癌症之首。随着肺癌病人数量的增加,医生对肺部 CT 图像进行研判的工作量也增加了不少,在这种情况下难免工作效率降低甚至会出现误诊。为了帮助医生减少重复性工作,对肺部 CT 图像进行计算机辅助检测的技术就被广泛应用于对肺癌的诊断和治疗过程中。医学 CT 图像处理主要是研究医学图像中的器官和组织之间的关系,并进行病理性分析。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1568

RICHARDSON-LUCY 去卷积简介

Lucy去卷积1.泊松过程及联合概率分布2.极大似然估计参考文献 1.泊松过程及联合概率分布 首先假设相机接收光子生成图像的过程符合泊松分布。 因此,一次曝光过程中,某像素位置接收到iii个光子的概率p(i)p(i)p(i)为: p(i)=exp⁡(−λ)⋅λii!\qquad\qquad p(i)=\exp(-\lambda)\cdot\cfrac{\lambda^{i}}{i!}p(i)=exp(−λ)⋅i!λi​ 那么针对一张M∗NM*NM∗N的图像,所有像素的联合概率分布可以描述为: P(I)=∏e

驽马十驾,功在不舍;锲而不舍,金石可镂。 8694

Qt项目——天气预报

通过对之前Qt的学习其实我们就已经有一点经验了,做天气预报只需要了解以下内容:stylesheet界面美化Json数据解析HTTP通信自定义控件绘制温度能讲的不重复的也基本上没什么了,其实明白它整个框架,会用常用的控件,不会的就是查手册或者上网查资料 ,剩下的就是多练了,看着代码多敲多写。!!

ycs66的博客 1016

手把手教你五种方案配置Obsidian免费同步,全平台通用(支持Alist/OpenList)

Obsidian是一款优秀的Markdown笔记工具,但官方同步服务每年近700元让人望而却步💸 本文整理了5种免费同步方案,涵盖苹果生态专属方案、多网盘插件同步、版本管理同步、点对点同步、自建实时同步等不同场景📱💻 每种方案都附有详细配置步骤,助你找到最适合的同步方式✨

XiaoqiangClub的博客 1832

基于 Qt / HTTP/JSON 的智能天气预报系统测试报告

随着人们对生活品质要求的提高,天气预报已成为日常生活的重要组成部分。通过准确的天气信息,用户可以更好地规划出行、穿衣等日常活动。本项目旨在开发一个基于 Qt 框架的天气预报系统,实现实时天气数据的获取、展示以及历史天气数据的查询功能。

m0_53518956的博客 1198

OpenClaw 保姆级 window部署

OpenClaw 保姆级 window部署 养龙虾

cs821984831的博客 298

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Qt 天气预报 天气查询 (代码附上)

参考链接:https://blog.youkuaiyun.com/fangye945a/article/details/84933234 QT获取天气信息一般都是通过调用天气服务器的接口来获取的,而获取天气的接口有很多,大家可以自行在网上查找。 本示例采用的获取天气的服务器接口为: http://wthrcdn.etouch.cn/weather_mini,请求参数名为city,参数内容为要查询天气的城市名...

I have sacrificed everything for Sankarea 5536

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: Qt项目天气预报(2) - 重写事件函数
下一篇: 网络通信架构
mx_jun
博客等级 码龄5年 1605粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值