基於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格式詳細信息,如下:

img

好了,有了接口返回的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工程和安裝包下載鏈接發送給你。

推薦閱讀


  • 個人博客:www.wangchaochao.top
  • 我的公衆號:mcu149
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章