2016-09-05 2 views
1

Я работаю над приложением, использующим Qt 5.7.0 GCC 64bit на Linux workstation 4.4.0-36-generiC#55-Ubuntu SMP Thu Aug 11 18:01:55 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux, который среди прочего показывает доступные WiFi сети от выбора, основной код здесь:Различать между открытыми и пароль заблокирован доступных WiFi сетей

void UeWiFiDiscoveryTask::run() 
{ 
    QList<QNetworkConfiguration> networksList=this->ueNetworkConfigurationManager()->allConfigurations(); 
    QList<UeWiFiNetworkRecord*> wifiList=QList<UeWiFiNetworkRecord*>(); 

    foreach(QNetworkConfiguration network, 
      networksList) 
    { 
     if(network.isValid()&&network.bearerType()==QNetworkConfiguration::BearerWLAN&&network.state()==QNetworkConfiguration::Discovered) 
     { 
      qDebug() << Q_FUNC_INFO 
        << network.state(); 

      wifiList.append(new UeWiFiNetworkRecord(new QImage(":/images/testWifi.jpg"), 
                network.name())); 

      emit this->ueSignalWiFiFound(*wifiList.last()); 
     } // if 
    } // foreach 

    emit this->ueSignalWiFiDiscoveryFinished(wifiList); 
} // run 

код работает на и он отлично работает. Тем не менее, я читаю Qt Bearer Management docs, и я не могу найти способ, как отличить Free WiFi и encrypted/protected WiFi. Как добавить такие функции?

P.S .: Я знаю, что это практический вопрос, и я готов получить некоторые отрицательные моменты, однако, я читал документы в течение нескольких дней, и я потерялся!

ответ

2

Предполагая, что это система с NetworkManager, тогда QNetworkConfiguration::identifier() вернет объект конфигурации D-Bus объекта конфигурации NetworkManager.

I.e. вы можете использовать QtDBus для вызова метода org.freedesktop.NetworkManager.Settings.Connection.GetSettings() на том объекте, который, я думаю, должен содержать информацию, которую вы ищете

Смежные вопросы