好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

嵌入式图形界面设计综合实验报告.doc

19页
  • 卖家[上传人]:大米
  • 文档编号:493734842
  • 上传时间:2023-03-28
  • 文档格式:DOC
  • 文档大小:457KB
  • / 19 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 嵌入式图形界面设计报告班级:计算机科学与技术15-2班小组成员:刘航征、安宝、曲晗羽 杨祎涵、张振、李雪辰2017年12月一、前言 天气预报(测)或气象预报(测)是使用现代科学技术对未来某一地点地球大气层的状态进行预测从史前人类就已经开始对天气进行预测来相应地安排其工作与生活(比如农业生产、军事行动等等)今天的天气预报主要是使用收集大量的数据(气温、湿度、风向和风速、气压等等),然后使用目前对大气过程的认识(气象学)来确定未来空气变化由于大气过程的混乱以及今天科学并没有最终透彻地了解大气过程,因此天气预报总是有一定误差的精品. 最传统的数据是在地面或海面上通过专业人员、爱好者、自动气象站或者浮标收集的气压、气温、风速、风向、湿度等数据世界气象组织协调这些数据采集的时间,并制定标准这些测量分每小时一次(METAR)或者每六小时一次(SYNOP) 该项目为一款天气预报软件,基于Qt5开发,具有查询指定城市天气、显示当天天气状况以及未来四天天气大致状况的主要功能,次要功能为更换软件皮肤,显示当天感冒指数等功能软件预览图:日期显示栏 搜索栏湿度、风向栏实时气温栏日出、日落时间显示栏感冒指数信息栏换肤按钮、最小化、关闭按钮今日以及未来四日天气二、选用的技术基本说明1、Qt JSON操作QJsonDocumentQJsonDocument 类用于读和写 JSON 文档。

      一个 JSON 文档可以使用 QJsonDocument::fromJson() 从基于文本的表示转化为 QJsonDocument, toJson() 则可以反向转化为文本解析器非常快且高效,并将 JSON 转换为 Qt 使用的二进制表示已解析文档的有效性,可以使用 !isNull() 进行查询如果要查询一个 JSON 文档是否包含一个数组或一个对象,使用 isArray() 和 isObject()包含在文档中的数组或对象可以使用 array() 或 object() 检索,然后读取或操作也可以使用 fromBinaryData() 或 fromRawData() 从存储的二进制表示创建来 JSON 文档QJsonArrayQJsonArray 类封装了一个 JSON 数组精品.JSON 数组是值的列表列表可以被操作,通过从数组中插入和删除 QJsonValue 一个 QJsonArray 可以和一个 QVariantList 相互转换可以使用 size() 来查询条目的数量,通过 insert() 在指定索引处插入值,removeAt() 来删除指定索引的值QJsonObjectQJsonObject 类封装了一个 JSON 对象。

      一个 JSON 对象是一个“key/value 对”列表,key 是独一无二的字符串,value 由一个 QJsonValue 表示一个 QJsonObject 可以和一个 QVariantMap 相互转换可以使用 size() 来查询“key/value 对”的数量,通过 insert() 插入“key/value 对”, remove() 删除指定的 keyQJsonValueQJsonValue 类封装了一个值JSON 中的值有 6 种基本数据类型:· bool(QJsonValue::Bool)· double(QJsonValue::Double)· string(QJsonValue::String)· array(QJsonValue::Array)· object(QJsonValue::Object)· null(QJsonValue::Null)一个值可以由任何上述数据类型表示此外,QJsonValue 有一个特殊的标记来表示未定义的值,可以使用 isUndefined() 查询值的类型可以通过 type() 或 isBool()、isString() 等访问函数查询。

      同样地,值可以通过 toBool()、toString() 等函数转化成相应的存储类型QJsonParseErrorQJsonParseError 类用于在 JSON 解析中报告错误枚举 QJsonParseError::ParseError:精品.该枚举描述 JSON 文档在解析过程中所发生的错误类型2、Qt XML 操作QXmlStreamReader     用于读取格式良好的XML文档的快速解析器,该类最快且最易于使用,并提供了与其他Qt兼容的应用程序编程接口,很适用于编写单通道解析器;3、QNetworkAccessManagerQNetworkAccessManager类允许应用程序发送网络请求和接收网络应答三、方案设计1、初始化UI界面2、获取当前地区时间3、从文件中读取每个城市名称以及其代码,将其组合分别存入QMap类对象citykeys中4、用预设的url发送http请求,获取本地城市名称5,、用获取的本地城市名称获取citykeys中对应的城市代码发出查询未来五天天气的http请求6、收到的回复为JSON文档,用QJsonDocument类解析JSON文档,将得到的未来五天的天气信息分别存入Forecast结构体数组forecast的每一个元素中,将这些信息显示在主窗口中对应的控件上,然后发出查询今天天气的http请求7、收到的回复为XML格式文档,用QXmlStreamReader类读取其信息,将当天的天气信息存入Today结构体today中,将这些信息显示在主窗口中对应的控件上。

      8、设置搜索按钮以及换肤按钮的信号与槽的关联流程图 程序启动初始化UI界面精品.获取当前本地时间读取城市及其代码Y获取本地城市名称点击搜索城市天气点击换肤按钮查询未来五天天气信息重绘UI界面查询当天天气信息点击关闭按钮Y退出程序四、详细代码解析ui设计界面:mainwindow.h:#ifndef MAINWINDOW_H#define MAINWINDOW_H#include #include#include精品.#include#include#include#include#include#include#includenamespace Ui {class MainWindow;}struct Forecast{ QString fengxiang; QString fengli; QString high; QString type; QString low; QString date;};struct Today{ QString ganmao; QString city; QString updatetime; QString wendu; QString fengli; QString fengxiang; QString sunrise; QString sunset; QString shidu;};class MainWindow : public QMainWindow{ Q_OBJECTpublic: explicit MainWindow(QWidget *parent = 0); ~MainWindow();protected:精品. void paintEvent(QPaintEvent *); void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *);protected slots: void replayFinished(QNetworkReply *reply);private slots: void on_getButton_clicked(); void on_updateButton_clicked();private: Ui::MainWindow *ui; QNetworkAccessManager *manager; QString URL_1; QString URL_2; Forecast forecast[5]; Today today; void parseJson(QString Json); void parseXml(QString Xml); void parseCity(QString City); void loadCitykeys();//加载城市代码文件 QMap citykeys;//存储城市代码 int choose;//0.查询IP 1.今天天气+指数 2.未来5天天气 QPixmap pixmap; QPoint move_point; bool mouse_press; QList forecast_date_list; QList forecast_temp_list; QList forecast_type_list; QString city; int uid;};#endif // MAINWINDOW_Hmainwindow.cpp:#include "mainwindow.h"精品.#include "ui_mainwindow.h"#include#include#include#include#include#include#include#include#include//#includeMainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.