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.
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
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). –
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