2017-06-15 3 views
1

Meine Konfiguration: Windows QT 5.5.1Qt networkAccessibleChanged Signal Brennen nicht

Ich möchte den Netzwerkstatus überwachen (die ich durch Einstecken/unpluggin das Netzwerkkabel simulieren).

Dies ist mein Code:

mNetManager = new QNetworkAccessManager(this); 

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

Verfahren UPDATEFLAG nie, weil das Signal QNetworkAccessManager aufgerufen :: networkAccessibleChanged nie ausgelöst wird.

Ich habe um diese durch eine Timer-Einstellung:

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; 
} 

}

Aber ich kann keine Veränderung zu erkennen scheinen, als es QNetworkAccessManager :: networkAccessible immer wieder, wenn ich/Auszugs-Netzwerkkabel-Stecker .

Irgendwelche Ideen, was ich vermisse? Danke.

Antwort

0

QNetworkConfigurationManager ist die Klasse, die Sie suchen. Schauen Sie sich onlineStateChanged(bool isOnline) Signal an.

+0

Vielen Dank für Ihre Segmentierung. Ich habe auch mit QNetworkConfigurationManager getestet, aber der Status ist immer online: QList activeConfigs = mConfManager-> allConfigurations (QNetworkConfiguration :: Active); qDebug() << "isonline:" << mConfManager-> isOnline(); – PerelMan

+0

Haben Sie nur eine Netzwerkschnittstelle? Vielleicht haben Sie ein zweites Ethernet-Kabel angeschlossen oder mit dem WLAN-Netzwerk verbunden? 'isOnline' gibt nur dann false zurück, wenn keine Ihrer Netzwerkverbindungen aktiv ist (unplugged/not connected). –

+0

ja: Ich habe 3 Netzwerkschnittstellen, eine von ihnen ist eine Schnittstelle der virtuellen Maschine, die ich abstellte. Selbst wenn ich alle Kabel herausziehe, habe ich immer noch einen Online-Status – PerelMan

Verwandte Themen