2017-06-15 20 views
1

我的配置: 的Windows,QT 5.5.1Qt的networkAccessibleChanged信號不點火

我要監控的網絡狀態(即我通過插入/ unpluggin網絡電纜模擬)。

這是我的代碼:

mNetManager = new QNetworkAccessManager(this); 

connect(mNetManager, &QNetworkAccessManager::networkAccessibleChanged, 
     this, &NetworkTester::updateFlag); 

方法updateFlag不會被調用因爲信號QNetworkAccessManager :: networkAccessibleChanged永遠不會被解僱。

我身邊這讓通過設定一個計時器:

QTimer *timer = new QTimer(this); 
    connect(timer, SIGNAL(timeout()), this, SLOT(checkNetwork())); 
    timer->start(1000); 

void NetworkTester::checkNetwork() 
{ 
switch (mNetManager->networkAccessible()) { 
case QNetworkAccessManager::Accessible: 
    qDebug() << "You are online."; 
    break; 

case QNetworkAccessManager::NotAccessible: 
    qDebug() << "You are offline."; 
    break; 

case QNetworkAccessManager::UnknownAccessibility: 
default: 
    qDebug() << "You know nothing, Jon Snow."; 
    break; 
} 

}

但我似乎無法檢測到任何變化,因爲它總是返回QNetworkAccessManager :: networkAccessible當我插/拔網線。

關於我可能會遺漏的任何想法? 謝謝。

回答

0

QNetworkConfigurationManager是您正在尋找的課程。看看onlineStateChanged(bool isOnline)信號。

+0

感謝您的細分。我使用QNetworkConfigurationManager進行了測試,但狀態始終在線: QList activeConfigs = mConfManager-> allConfigurations(QNetworkConfiguration :: Active); qDebug()<<「isonline:」<< mConfManager-> isOnline(); – PerelMan

+0

你只有一個網絡接口嗎?也許,你有第二根以太網電纜插入或連接到無線網絡?只有當您的網絡連接都未激活(未插入/未連接)時,isOnline纔會返回false。 –

+0

是的:我有3個網絡接口,其中一個是我關閉的虛擬機接口。即使拔下所有電纜,我仍然有在線狀態 – PerelMan