2016-09-05 1 views
1

ich auf einigen Anwendungen arbeiten mit Qt 5.7.0 GCC 64bit auf 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 die unter anderem zeigt die verfügbaren WiFi Netzwerke aus der Auswahl ist der Kern-Code hier:Unterscheiden zwischen einem offenen und Passwort gesperrt WiFi-Netzwerken

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 

Der Code läuft auf getrennter Faden und es funktioniert perfekt. Allerdings lese ich Qt Bearer Management docs und ich finde den Weg nicht, wie man zwischen Free WiFi und encrypted/protected WiFi unterscheidet. Wie füge ich solche Funktionen hinzu?

S.S .: Ich bin mir bewusst, das ist How-to Frage und ich bin bereit, einige negative Punkte zu gewinnen, aber ich habe die Dokumente für mehrere Tage gelesen und ich bin verloren!

Antwort

2

Angenommen, dies ist ein System mit NetworkManager, dann gibt QNetworkConfiguration::identifier() den D-Bus ObjectPath des NetworkManager-Konfigurationselements zurück.

I.e. Sie könnten QtDBus verwenden, um die org.freedesktop.NetworkManager.Settings.Connection.GetSettings() Methode für dieses Objekt aufzurufen, von dem ich denke, dass es die gesuchten Informationen enthalten sollte

Verwandte Themen