基于Qt开发的天气预报程序

程序的效果图如下(附有可直接运行的.exe文件):

点击跳转到仓库地址

程序功能如下:

在搜索框中输入想查询的城市名称,点击回车即可显示目标城市天气信息

程序实现细节:

首先是程序的UI界面搭建,大体采用垂直布局或水平布局内放置QLabel控件,并在控件内放入相应的图标或文件,再给布局加上背景颜色增加美感度;部分布局如下图:

完成Ui的设置以后,就到了天气数据的获取,想从网络上请求一个城市的天气数据,首先要知道这个城市的城市编号,部分城市的编号如下:


知道了城市的编号,我们只需在浏览器输入网址,这里以北京为例,

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

我们可以用Qt封装好的库来请求数据,mNetworkManager是一个QNetworkAccessManager类型的对象,当请求完成之后会触发QNetworkAccessManager的finished信号,然后我们进入槽函数读取数据并执行其他的操作。

connect(mNetworkManager,&QNetworkAccessManager::finished,this,&MainWindow::onReplied);

得到的JSON如下,包含了最近七天的天气数据:

接下来就到了解析JSON数据的步骤,我们获取的数据是一个QByteArray类型,然后将QByteArray作为初始值初始化QJsonDocument对象,然后就可以调用Qt关于JSON库提供的方法解析数据;对于JSON数据的解析记住一句话即可,解析{}内的数据用QJsonObject对象,解析[]内的数据用QJsonArray对象,部分代码如下:

数据解析完成之后就是对用户的一个展示,我们只需根据解析的内容做一些判断,然后修改各个控件的文本和图标即可。部分代码如下:

最后就是本程序的一个难点,对温度曲线的绘制,首先是画点,然后将点连成线;其中点的x坐标为显示星期控件的宽度的一半,y坐标初始为温度平均值的一半,然后根据数值上下浮动。最后将点连接起来并在其上面加上文字描述。

程序总结:

在本次练习中,我熟悉了Qt的网络模块的使用,了解了JSON数据的解析和提取,提高了我的界面设计和布局能力,锻炼了问题解决能力。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值