Qt判斷網路是否在

2022-08-23 16:24:14 字數 1939 閱讀 4729

我們已知的網路連線有3種:撥號、使用區域網以及**上網。

無論哪一種上網方式都可以判斷網路是否暢通,藉此,我們來做乙個判斷網路是否暢通(存在)的程式,新建乙個基類為qwidget的工程,不要ui。

新增新檔案:c++class → class name :isonl、base name :qwidget

頭函式 >> isonl.h。

1

#ifndef isonl_h

2#define isonl_h3//

撥號4#define internet_connection_modem 15//

區域網6

#define internet_connection_lan 27//

**上網

8#define internet_connection_proxy 49//

**被占用

10#define internet_connection_modem_busy 8

1112 #include 13

14class isonl : public

qwidget15;

2627

#endif

//isonl_h

源** >> isonl.cpp

#include "

isonl.h

"#include

#include

//定義函式指標

typedef bool (*connectfun)(int* lpdwflags,int

dwreserved);

isonl::isonl(qwidget *parent) : qwidget(parent)

//獲得聯網方式

void

isonl::getinternetconnectstate()

else

if(flags & internet_connection_lan) //

else

if(flags & internet_connection_proxy) //

}else

emit returnisonline(a);

//訊號發射出去

}}

在工程檔案(widget.pro)中新增

1 qt += core gui network

此時,我們的網路判斷已經做好,接下來是如何去運用。

在頭函式widget.h中

1 #include "

isonl.h"2

3//定義私有變數

4private

:5 isonl *online;67

//新增乙個私有槽訊號用來實現

8private

slots:

9void showonline(int

);10

11//

新增乙個訊號槽函式,與之相對

12signals:

13void returnisonline(int

);14

//這個函式好像是不能被省略,我的系統是win10測試的時候如何沒有此函式,會導致出錯。

在源**widget.cpp中

1

//在建構函式中新增

2 online = new

isonl;

3 connect(online,signal(returnisonline(int)),this,slot(showonline(int

)));45

//獲取網路是否暢通

6void widget::showonline(inta)7

13else

if(a == -1)14

1819 }

以上就是qt判斷網路是否存在的內容,此內容還可以運用到:判斷網路連線方式,有興趣的可以嘗試一下。

利用Qt判斷點是否在直線上

在計算機集合中乙個常用的功能就是判斷交集的關係,點是否在直線上也是常用的一種判斷關係。定義直線 pragma once include include 線段 class lineseg inline void setendpoint qpointf pt inline qpointf getstar...

判斷網路是否可用

這段 用於判斷網路是否可用,如果不可用則開啟網路設定,設定網路連線,當然也可以忽略設定,即不做處理。connectivitymanager connectmanager connectivitymanager this.getsystemservice connectivity service if...

QT判斷檔案 目錄是否存在

最近在用qt寫乙個ui,遇到刪除sd卡中的檔案失敗情況,有些時候是存在刪除鍊錶裡面的檔案在sd卡上已經不存在了,導致失敗,以為我的鍊錶是定時重新整理的,但是檔案是實時更新會同步覆蓋的。這樣就存在可能上一秒剛掃瞄存到煉表裡的檔案下一秒就被迴圈覆蓋了,所以增加檔案判斷機制。在linux c中我一般同一用...