最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Qt實現(xiàn)獲取本機IP和定位

 更新時間:2024年11月07日 09:41:53   作者:fengbizhe  
這篇文章主要為大家詳細介紹了如何使用Qt實現(xiàn)獲取本機IP和定位,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

前言:

在寫一個天氣預(yù)報模塊時,需要一個定位功能,在網(wǎng)上翻來翻去才找著,放在這里留著回顧下,也幫下有需要的人

一開始我想著直接調(diào)用百度地圖的API來定位,

然后我就想先獲取本機IP的方式,然后調(diào)用百度地圖的api來進行對位,結(jié)果怎么弄都只能獲取到私有IP,私有IP是沒法用來定位,但還是具體代碼還是貼在這下:

QString MainWindow::getIP()//返回一個IP地址,但是是私有的
{
    QList<QHostAddress> list=QNetworkInterface::allAddresses();
    foreach (QHostAddress address, list) {
        if(address.protocol()==QAbstractSocket::IPv4Protocol)
            return address.toString();
    }
    return "0.0.0.0";
}

重點來了,我找到了一個可以獲取公有IP和當前用戶所在市的API,http://whois.pconline.com.cn/ipJson.jsp?json=true,調(diào)用這個API,就可以了

要調(diào)用之前,要寫一個類去存放(拆解)返回JSON數(shù)組,很簡單,畢竟這個JSON數(shù)組的內(nèi)容很少

#include <QObject.h>
class location{
public:
    location(){
        ip="";
        pro="";
        proCode="";
        city="";
        cityCode=0;
    }
    QString ip;
    QString pro;
    QString proCode;
    QString city;
    QString cityCode;
};

http請求,

在頭文件定義兩個變量,還有需要用的到函數(shù):

protected:
    //解析本機外網(wǎng)IP,并獲取所在市
    void locationInfo();
private slots:
    //處理定位API請求
    void onLocationInfoReceived(QNetworkReply *reply);

private:
    //定位數(shù)據(jù)
    location mlocation;
    //定位用的API的請求
    QNetworkAccessManager* mLocationManger;

放在在構(gòu)造函數(shù):

    //定位請求
    mLocationManger=new QNetworkAccessManager(this);
connect(mLocationManger,&QNetworkAccessManager::finished,this,&MainWindow::onLocationInfoReceived);
    locationInfo();
void MainWindow::locationInfo()
{
    QUrl url("http://whois.pconline.com.cn/ipJson.jsp?json=true");
    mLocationManger->get(QNetworkRequest(url));
}
void MainWindow::onLocationInfoReceived(QNetworkReply *reply)
{
    if (reply->error() == QNetworkReply::NoError) {
        QString data = QString::fromLocal8Bit(reply->readAll());
        QJsonDocument jsonDocument = QJsonDocument::fromJson(data.toUtf8());
        QJsonObject jsonObject = jsonDocument.object();
        qDebug()<<"read all:"<<jsonObject;
        mlocation.ip = jsonObject.value("ip").toString();
        mlocation.pro = jsonObject.value("pro").toString();
        mlocation.proCode = jsonObject.value("proCode").toString();
        mlocation.city = jsonObject.value("city").toString();
        mlocation.cityCode = jsonObject.value("cityCode").toString();

    } else {
        qDebug() << "Location request error: " << reply->errorString();
    }
    qDebug()<<mlocation.city;
    //請求天氣信息
    getWeatherInfo(mlocation.city);
    reply->deleteLater();//deleteLater 是 Qt 框架中的一個方法,用于在對象的生命周期結(jié)束時安全地刪除對象
}

到此這篇關(guān)于使用Qt實現(xiàn)獲取本機IP和定位的文章就介紹到這了,更多相關(guān)Qt獲取本機IP和定位內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 圖解C++的STL之stack和queue,輕松理解數(shù)據(jù)結(jié)構(gòu)

    圖解C++的STL之stack和queue,輕松理解數(shù)據(jù)結(jié)構(gòu)

    聚焦?C++?的?STL?中的?stack?和?queue,讓數(shù)據(jù)結(jié)構(gòu)變得簡單有趣!?通過圖解的方式,我們將輕松理解這兩個重要的數(shù)據(jù)結(jié)構(gòu),準備好開啟?STL?學習之旅了嗎?讓我們一起探索?stack?和?queue?的奧秘吧!
    2024-03-03
  • Qt事件過濾器的實現(xiàn)示例

    Qt事件過濾器的實現(xiàn)示例

    本文介紹了Qt中的事件過濾器(Event Filter)機制,它是一種高效靈活的事件攔截處理方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2026-01-01
  • C++實現(xiàn)學校運動會管理系統(tǒng)

    C++實現(xiàn)學校運動會管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)學校運動會管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • 詳解進程同步與互斥機制

    詳解進程同步與互斥機制

    進程同步是一個操作系統(tǒng)級別的概念,是在多道程序的環(huán)境下,存在著不同的制約關(guān)系,為了協(xié)調(diào)這種互相制約的關(guān)系,實現(xiàn)資源共享和進程協(xié)作,從而避免進程之間的沖突,引入了進程同步
    2021-06-06
  • C語言實現(xiàn)UDP通信

    C語言實現(xiàn)UDP通信

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)UDP通信,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • static關(guān)鍵字的作用詳解

    static關(guān)鍵字的作用詳解

    在C語言中,static的字面意思很容易把我們導(dǎo)入歧途,其實它的作用有三條。
    2013-04-04
  • C++與C語言常用的語法對比

    C++與C語言常用的語法對比

    這篇文章主要介紹了C++與C語言常用的語法對比,文章基于c++和C語言的相關(guān)資料展開兩者的語法相互對比,需要的小伙伴可以參考一下,希望對你的學習有所幫助
    2022-04-04
  • C++實現(xiàn)哈希散列表的示例

    C++實現(xiàn)哈希散列表的示例

    本文主要介紹了C++實現(xiàn)哈希散列表的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • Qt 中開啟線程的多種方式小結(jié)

    Qt 中開啟線程的多種方式小結(jié)

    本篇文章就來整理一下 Qt 中使用線程的五種方式,方便后期回顧。前面兩種比較簡單,一筆帶過了,主要介紹后面三種,感興趣的朋友跟隨小編一起看看吧
    2021-09-09
  • C語言完全平方整數(shù)的判斷

    C語言完全平方整數(shù)的判斷

    大家好,本篇文章主要講的是C語言完全平方整數(shù)的判斷,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12

最新評論

临武县| 花莲县| 象州县| 托克托县| 巴东县| 海盐县| 赤壁市| 财经| 榆树市| 额敏县| 塔河县| 马边| 镇沅| 多伦县| 松潘县| 龙海市| 翼城县| 大英县| 法库县| 澄迈县| 平定县| 文昌市| 屯留县| 丹江口市| 连山| 卫辉市| 沂南县| 雷山县| 任丘市| 横山县| 西乌珠穆沁旗| 金堂县| 湾仔区| 定安县| 工布江达县| 昌乐县| 什邡市| 台北市| 南和县| 全州县| 岑巩县|