C++ QNetworkConfigurationManager::allConfigurations()不';t列表无线局域网

C++ QNetworkConfigurationManager::allConfigurations()不';t列表无线局域网,c++,windows,qt,networking,wifi,C++,Windows,Qt,Networking,Wifi,在Windows 10下运行,使用两种不同的系统进行测试: 当我运行QNetworkConfigurationManager::allConfigurations()时,我不会得到任何WLAN配置,即使我主动连接到Wifi网络 标题: public: NetworkManager(QObject* parent = 0); private slots: void onNetworkConfigUpdate(); private: QNetworkConfiguration cfg

在Windows 10下运行,使用两种不同的系统进行测试:

当我运行
QNetworkConfigurationManager::allConfigurations()
时,我不会得到任何WLAN配置,即使我主动连接到Wifi网络

标题:

public:
  NetworkManager(QObject* parent = 0);

private slots:
  void onNetworkConfigUpdate();

private:
  QNetworkConfiguration cfg;
  QList<QNetworkConfiguration> netcfgList;
  QNetworkConfigurationManager ncm;
公共:
NetworkManager(QObject*parent=0);
专用插槽:
void onNetworkConfigUpdate();
私人:
QNetworkConfiguration;
QList-netcfgList;
QNetworkConfigurationManager ncm;
.cpp

NetworkManager::NetworkManager(QObject*parent):QObject(parent){
ncm.updateConfiguration();
连接(&ncm,信号(updateCompleted()),此,插槽(onNetworkConfigUpdate());
}
void NetworkManager::onNetworkConfigUpdate(){
netcfgList=ncm.allConfigurations();
用于(自动和x:netcfgList){
if(x.bearerType()==QNetworkConfiguration::BearerWLAN){

qDebug()我也有同样的问题。对我来说,是由于缺少承载插件DLL造成的

为了解决这个问题,我必须复制应用程序根文件夹中的QT“plugins/bearer”文件夹(包含qgenericbarer.dll和qnativewifibearer.dll)

像这样:

  • 应用程序文件夹/
    • Application.exe
    • Qt5Network.dll
    • 持票人/
      • QGenericBear.dll
      • qnativewifibearer.dll

Win10,qt5.9.x,mingw..您的代码很好,它列出了WLAN(wifi)另外!在Windows上,我们的团队大约3年前就使用了Win32 API,因为Qt不总是列出WiFi,除了列出WiFi之外什么也不做。在Mac和Linux上,QNetworkConfigurationManager只列出WiFi,但实际上并没有使用它。我现在在Linux上使用KDE的NetworkManagerQt进行基本WiFi操作,例如身份验证和连接。我还使用MinGW进行了尝试,结果是一样的。这并不奇怪。正如您可能在中注意到的那样,他们有一个关于执行WLAN扫描的详细说明,对于我来说,在信号弱的情况下,结果是不能保证的。试着使用
过滤器,正如您在代码中看到的,我已经在使用更新功能了(每隔几秒钟就会调用一次)正如您发布的链接中所述。Wifi连接非常完美(1米距离),即使等待很长时间并尝试使用不同的设备,也无法正常工作。遇到了相同的问题。但是我的插件/承载器没有qnativewifibearer.dll-只有qgenericbearer.dll和qgenericbearer.dll(Qt 5.12 RC与MSVC2017)
NetworkManager::NetworkManager(QObject* parent) : QObject(parent) {
    ncm.updateConfigurations();
    connect(&ncm, SIGNAL(updateCompleted()), this,  SLOT(onNetworkConfigUpdate()));
}

void NetworkManager::onNetworkConfigUpdate() {
netcfgList = ncm.allConfigurations();
for (auto& x : netcfgList) {
    if (x.bearerType() == QNetworkConfiguration::BearerWLAN) {
        qDebug() << "Wifi found: " << x.name();
    } else {
        qDebug() << "Something else: " << x.bearerType() << " - name: " << x.name();
    }
  }
}