QT 天气查询(待续

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ts6633/article/details/83052154

QT 天气查询

网络部分

利用网络,获取当前地区温度
1、网页解析
2、json解析
3、选择各种地区

本人例子里面有需要openssl来支持,当然也可以跳过。

/*
json 部分
{“results”:[{“location”:{“id”:“WS0E9D8WN298”,“name”:“广州”,“country”:“CN”,“path”:“广州,广州,广东,中国”,“timezone”:“Asia/Shanghai”,“timezone_offset”:"+08:00"},“now”:{“text”:“多云”,“code”:“4”,“temperature”:“20”},“last_update”:“2018-10-18T21:10:08+08:00”}]}
*/

/*html 部分
< ArrayOfString xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd=“http://www.w3.org/2001/XMLSchema” xmlns=“http://WebXml.com.cn/”>
< string>广东< /string>
< string>广州< /string>
< string>59287< /string>
< string>59287.jpg< /string>
< string>2018/10/18 21:07:09< /string>
< string>20℃/24℃< /string>
< string>10月18日 多云< /string>
< string>无持续风向小于3级< /string>
< string>1.gif< /string>< string>1.gif< /string>
< string>今日天气实况:气温:21℃;风向/风力:东北风 1级;湿度:78%;紫外线强度:弱。空气质量:中。< /string>
< string>
紫外线指数:弱,辐射较弱,涂擦SPF12-15、PA+护肤品。 健臻·血糖指数:易波动,血糖易波动,注意监测。 穿衣指数:舒适,建议穿长袖衬衫单裤等服装。 洗车指数:较适宜,无雨且风力较小,易保持清洁度。 空气污染指数:中,易感人群应适当减少室外活动。
< /string>
< string>20℃/25℃< /string>
< string>10月19日 多云< /string>
< string>无持续风向小于3级< /string>
< string>1.gif< /string>
< string>1.gif< /string>
< string>19℃/26℃< /string>
< string>10月20日 多云< /string>
< string>无持续风向小于3级
< string>1.gif< /string>
< string>1.gif< /string>
< string>
广州是广东省的省会,是中国南方最大的海滨城市,广州位于东经113。17,北纬23。8,地处中国大陆南部,广东省南部,珠江三角洲北缘。广州临南海,邻近香港特别行政区,是中国通往世界的南大门,广州属丘陵地带。中国的第三大河----珠江从广州市中心穿流而过。广州是一座历史文化名城。相传在远古时候,曾有五位仙人,身穿五色彩服、骑着嘴衔稻穗的五色仙羊降临此地,把稻穗赠给百姓,祝愿这里永无饥荒。从此,广州便有“羊城”、“穗城”的美称,“五羊”也成为广州的象征。广州既是中国也是世界名城,又是一座古城,因历史上有五羊仙子降临献稻穗的故事,广州又称为“羊城”和“穗城”,简称“穗”;广州一年四季如春、繁花似锦,除夕迎春花市闻名海内外,故又有“花城”的美誉。广州地处低纬,属南亚热带季风气候区。地表接受太阳辐射量较多,同时受季风的影响,夏季海洋暖气流形成高温、高湿、多雨的气候;冬季北方大陆冷风形成低温、干燥、少雨的气候。年平均气温为21.4-21.9度,年降雨量平均为1623.6-1899.8mm,北部多于南部。1982年,广州被国务院选定为全国首批历史文化名城之一,是我国重点旅游城市。1999年1月,广州被评为优秀旅游城市。景观:白云山、莲花山、南海神庙、佛山祖庙、广州动物园等。
< /string>
< /ArrayOfString>
*/

两个相比,各有优劣。
我们以第二个为例子.
PRO文件添加 QT += core gui network xml
#include

public slots:
void getWeather(QNetworkReply *replyweather);//这里新建个槽,在步骤三的时候要用到
private:
QStringList List;
QNetworkAccessManager *manger;
QSslConfiguration config;
QByteArray readalldata;
QNetworkRequest request;
void Analysisjson();
void Analysisxml();
QString jsonobj(QJsonObject vobj ,QString jsonst );

cpp文件

manger = new QNetworkAccessManager(this);
connect(manger ,&QNetworkAccessManager::finished,this,&networkget::getWeather);
config.setPeerVerifyMode(QSslSocket::VerifyNone);
config.setProtocol(QSsl::TlsV1_0);
request.setSslConfiguration(config);
 request.setUrl(QUrl("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName?theCityName=%E5%B9%BF%E5%B7%9E"));//
manger->get(request) ;
void networkget::getWeather(QNetworkReply *replyweather)
{
    readalldata.clear();
  	readalldata = replyweather->readAll();
  	QString str = readalldata;
	QXmlStreamReader reader(readalldata);
    while (!reader.atEnd())
    {
        reader.readNext();
        if (reader.isStartElement())
            {
            if (reader.name() == "string")
            {
            //把所有的数据放进去list。
             List.append(reader.readElementText());
            }
        }
    }
    if (reader.hasError()) {
         qDebug()<<"error";
    }
    	//读取完毕后,可以把需要的数据显示出来。
    	    for (int i = 0; i < List.size(); ++i)
           				qDebug() << List.at(i) << endl;
}

结语:
无论的xml,json。都是要解析部分最为重要。也要网站部分的支持。

如果需要openSLL的,可以找找其他文章看看呐。

展开阅读全文

没有更多推荐了,返回首页