diff -Naur indicator-china-weather-3.1.0/src/geoipworker.cpp indicator-china-weather-3.1.0~/src/geoipworker.cpp --- indicator-china-weather-3.1.0/src/geoipworker.cpp 2021-11-27 03:59:19.000000000 +0800 +++ indicator-china-weather-3.1.0~/src/geoipworker.cpp 2022-01-10 14:49:04.598862385 +0800 @@ -264,29 +264,33 @@ const QString automaicCity() { - QString ip; - QString city; +// QString ip; +// QString city; - getIpAndCityByUbuntu(UbuntuUrl, ip, city); - if (ip.isEmpty() || ip == "0.0.0.0") { - ip = getIpByPconline(PconlineUrl); - } - -// qDebug() << "ip:" << ip; - - if (city.isEmpty()) { - city = getCityFromIPAddr(ip);//根据ip从geoip库定位城市 - if (city.isEmpty()) { - city = getCityFromIpByAmap(ip);//根据ip从高德API定位城市,该方式使用高德key,访问次数有限 - } - if (city.isEmpty()) { - city = getCityFromIpByTaobao(ip);//根据ip从淘宝service定位城市,该方式访问速度慢,可能访问失败 - } - } - -// qDebug() << "city:" << city; - - return city; +// getIpAndCityByUbuntu(UbuntuUrl, ip, city); +// if (ip.isEmpty() || ip == "0.0.0.0") { +// ip = getIpByPconline(PconlineUrl); +// } +// if (city.isEmpty()) { +// city = getCityFromIPAddr(ip);//根据ip从geoip库定位城市 +// if (city.isEmpty()) { +// city = getCityFromIpByAmap(ip);//根据ip从高德API定位城市,该方式使用高德key,访问次数有限 +// } +// if (city.isEmpty()) { +// city = getCityFromIpByTaobao(ip);//根据ip从淘宝service定位城市,该方式访问速度慢,可能访问失败 +// } +// } +// return city; + QNetworkAccessManager *manager = new QNetworkAccessManager(); + QNetworkReply *reply = manager->get(QNetworkRequest(QUrl("http://myip.ipip.net"))); + QByteArray responseData ; + QEventLoop eventLoop; + QObject::connect(manager,&QNetworkAccessManager::finished,&eventLoop,&QEventLoop::quit); + eventLoop.exec(); + responseData = reply->readAll(); + QString str = responseData; + QStringList respList = str.split(' '); + return respList[5]; } } // namespace diff -Naur indicator-china-weather-3.1.0/src/geoipworker.h indicator-china-weather-3.1.0~/src/geoipworker.h --- indicator-china-weather-3.1.0/src/geoipworker.h 2021-11-27 03:59:19.000000000 +0800 +++ indicator-china-weather-3.1.0~/src/geoipworker.h 2022-01-10 14:49:04.574862040 +0800 @@ -21,6 +21,10 @@ #define GEOIP_WORKER_H #include +#include +#include +#include +#include class QNetworkAccessManager; class QNetworkReply; diff -Naur indicator-china-weather-3.1.0/src/mainwindow.cpp indicator-china-weather-3.1.0~/src/mainwindow.cpp --- indicator-china-weather-3.1.0/src/mainwindow.cpp 2021-11-27 03:59:19.000000000 +0800 +++ indicator-china-weather-3.1.0~/src/mainwindow.cpp 2022-01-10 14:49:04.606862500 +0800 @@ -361,11 +361,12 @@ //根据获取到网络探测的结果分别处理 connect(m_weatherManager, &WeatherManager::nofityNetworkStatus, this, [=] (const QString &status) { if (status == "OK") { - //m_weatherManager->startAutoLocationTask();//开始自动定位城市 + m_weatherManager->startAutoLocationTask();//开始自动定位城市 //CN101010100,beijing,北京,CN,China,中国 - // m_weatherManager->startGetTheWeatherData("101010100"); +// m_weatherManager->startGetTheWeatherData("101010100"); QStringList listCityId = getCityList().split(","); + qDebug()<<"listCityId:"<startGetTheWeatherData(listCityId.at(0)); } else { if (status == "Fail") { @@ -381,6 +382,9 @@ connect(m_weatherManager, &WeatherManager::requestAutoLocationData, this, [=] (const CitySettingData &info, bool success) { if (success) { //自动定位城市成功后,更新各个ui,然后获取天气数据 + m_weatherManager->startGetTheWeatherData(info.id); + + } else { //自动定位城市失败后,获取天气数据 } diff -Naur indicator-china-weather-3.1.0/src/weathermanager.cpp indicator-china-weather-3.1.0~/src/weathermanager.cpp --- indicator-china-weather-3.1.0/src/weathermanager.cpp 2021-11-27 03:59:19.000000000 +0800 +++ indicator-china-weather-3.1.0~/src/weathermanager.cpp 2022-01-10 14:49:04.559861824 +0800 @@ -165,7 +165,6 @@ } file.close(); } - if (autoSuccess) { emit this->requestAutoLocationData(info, true); } else {