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當我插/拔網線。
關於我可能會遺漏的任何想法? 謝謝。
感謝您的細分。我使用QNetworkConfigurationManager進行了測試,但狀態始終在線: QList activeConfigs = mConfManager-> allConfigurations(QNetworkConfiguration :: Active); qDebug()<<「isonline:」<< mConfManager-> isOnline(); –
PerelMan
你只有一個網絡接口嗎?也許,你有第二根以太網電纜插入或連接到無線網絡?只有當您的網絡連接都未激活(未插入/未連接)時,isOnline纔會返回false。 –
是的:我有3個網絡接口,其中一個是我關閉的虛擬機接口。即使拔下所有電纜,我仍然有在線狀態 – PerelMan