2017-06-15 5 views
1

私の設定を発射ません。QtのnetworkAccessibleChanged信号は

これは私のコードです:

mNetManager = new QNetworkAccessManager(this); 

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

信号QNetworkAccessManagerのでupdateFlagが呼び出されない方法:: 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

ネットワークインターフェイスは1つだけですか?たぶん、2番目のイーサネットケーブルが接続されているか、WiFiネットワークに接続されていますか? 'isOnline'はあなたのネットワーク接続がどれもアクティブでない(接続されていない/接続されていない)場合にのみfalseを返します。 –

+0

はい:私は3つのネットワークインターフェイスを持っています。そのうちの1つは、スイッチを切った仮想マシンインターフェイスです。すべてのケーブルを抜いても、私はまだオンラインステータスを持っています – PerelMan

関連する問題