区分开放和密码锁定的可用WiFi网络

时间:2016-09-05 04:35:39

标签: qt wifi wificonfiguration

我正在使用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网络,核心代码在此处:

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 WiFiencrypted/protected WiFi。如何添加此类功能?

PS:我知道这是如何提问而且我已经准备好获得一些负面因素,但是,我已经阅读了几天的文档而且我迷路了!

1 个答案:

答案 0 :(得分:2)

假设这是一个带有NetworkManager的系统,那么QNetworkConfiguration::identifier()将返回NetworkManager配置项的D-Bus ObjectPath。

即。您可以使用QtDBus调用该对象上的org.freedesktop.NetworkManager.Settings.Connection.GetSettings()方法,我认为该方法应该包含您要查找的信息