QT 天氣查詢(待續
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
兩個相比,各有優劣。 我們以第二個為例子. 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的,可以找找其他文章看看吶。