我正在使用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 WiFi
和encrypted/protected WiFi
。如何添加此类功能?
答案 0 :(得分:2)
假设这是一个带有NetworkManager的系统,那么QNetworkConfiguration::identifier()
将返回NetworkManager配置项的D-Bus ObjectPath。
即。您可以使用QtDBus调用该对象上的org.freedesktop.NetworkManager.Settings.Connection.GetSettings()
方法,我认为该方法应该包含您要查找的信息