基于Qt的新冠肺炎疫情数据实时监控平台1.1版本
宅家无聊,不如学点技术!
1.前言
上一篇文章,介绍了使用基于Qt开发的新冠病毒肺炎疫情监控平台的实现思路和简单过程,主要包括数据接口的获取和Qt的开发,这两天修复一些BUG,完善了部分功能,如下:
- 新增辟谣信息详情显示界面,点击谣言标题弹出信息详情。
- 修复数据类型定义错误造成的折线显示错误的BUG
- 适配Linux,修改打开超链接函数
2.BUG修复
今天早上打开一看,累计疑似/确诊折线变成了下面这样,
而腾讯新闻页面的是这样:
很明显是纵轴的最大值设置错了,仔细观察2月14日的累计确诊病例是6万多,很明显是超过了数据16位整形的最大值65535,仔细一查代码,果然是设置成了uint16类型,改为32位的整形或者double类型就没问题了,如下:
通过查找历史数据可以知道,2月13日的累计确诊人数是63932,2月14日的确诊人数是66576,刚好超过uint16_t数据类型运行的最大值65535。这也就之前的折线图都是正确的原因,因为还没超过最大值,这也提醒我们定义变量时,一定要考虑到数据允许的范围。
3.Linux系统适配
由于Qt的跨平台特性,只需要编写一套代码,然后在不同平台下的Qt环境中去编译,就可以生成运行在不同平台下的执行文件。我们来试试看这个小项目在Linux下的效果。当我尝试在Ubuntu环境下编译工程时,报错提示找不到头文件:
这也不奇怪,因为windows.h是Windows系统下的头文件,而Ubuntu肯定是没有的。程序中在打开超链接时,会调用这个windows.h中的一个ShellExecuteA函数:
##include "windows.h"
............
void about::anchorClickedSlot(const QUrl& url)
{
QDesktopServices::openUrl(url);
// ShellExecuteA(NULL, "open", url.toString().toStdString().c_str(), "", "", SW_SHOW);
}
在网上搜索一番,有网友介绍说可以使用qt_windows.h,更改之后再次编译,还是报错,打开头文件一看,还是调用了windows.h
文件:
还好,Qt原生的QDesktopServices类中有可以打开链接的函数,兼容Windows和Linux系统。
#include <QDesktopServices>
............
void about::anchorClickedSlot(const QUrl& url)
{
QDesktopServices::openUrl(url);
// ShellExecuteA(NULL, "open", url.toString().toStdString().c_str(), "", "", SW_SHOW);
}
这个QDesktopServices类中,不仅可以调用默认浏览器打开链接,还可以打开文件夹,获取桌面、文档、图片等目录。
编译成功之后,在Linux下的运行界面:
4.添加辟谣信息详情显示
在1.0版本程序中,查看辟谣信息的详情,可以通过点击谣言标题,然后调用默认浏览器打开这个链接,再去查看详细的信息,但是腾讯的这个信息界面是针对手机端设计的,PC上浏览效果并不好,如下:
手机端:
上一篇文章我们也介绍了,腾讯开放了一个接口,可以根据谣言的ID号,去获取谣言的详细信息,数据为JSON格式,但是上一个版本程序中并没有使用这个接口,这次我们把他用上。
如这条辟谣新闻:
- 标题:阴雨天和大雾天会增加新冠病毒感染风险
- ID:8be33c500e00257c97419ac24ab59d8f
我们访问这样一个地址:
https://vp.fact.qq.com/miniArtData?id=8be33c500e00257c97419ac24ab59d8f
,就会得到这条谣言新闻的JSON格式详细信息,如下:
好了,有了接口返回的JSON数据,我们就可以直接解析使用了。
逻辑设计也很简单,在用户点击谣言标题时,弹出窗口,而这个窗口里显示的就是这条谣言的详细信息,如谣言鉴定信息,查证者及其机构,来源等等,返回之后再次点击其他标题,则显示对应的详细信息。
Qt实现也很简单,增加一个GET请求,保存返回的数据,然后解析,再增加一个窗口,把解析出来的数据显示出来。富文本的显示和之前一样,还是采用的HTML模板方式,原理类似printf格式化输出,这种富文本的显示方法目前还没有人使用过。
5.开源地址
本项目Qt工程所有的代码和安装包下载地址已经开源在Github和Gitee上,现在已经更新到1.1版本,地址如下:
- 国外GitHub:
https://github.com/whik/qt_2019_ncov
- 国内Gitee:
https://gitee.com/whik/qt_2019_ncov
如果你已经关注了我的公众号(ID:mcu149),可以在后台回复:疫情监控,我会把最新版的Qt工程和安装包下载链接发送给你。
推荐阅读
- 基于Qt的新冠肺炎疫情数据实时监控平台(开源小项目)
- Qt平台下使用QJson解析和构建JSON字符串
- Qt实现软件自动更新的一种简单方法
- Qt小项目之串口助手控制LED
- 电路板上的这些标志你都知道是什么含义吗?
- 个人博客:
www.wangchaochao.top
- 我的公众号:
mcu149