QNetworkConfigurationManager::allConfigurations() 没有列出 WLAN

gek*_*o42 5 c++ windows networking qt wifi

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

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

标题:

public:
  NetworkManager(QObject* parent = 0);

private slots:
  void onNetworkConfigUpdate();

private:
  QNetworkConfiguration cfg;
  QList<QNetworkConfiguration> netcfgList;
  QNetworkConfigurationManager ncm;
Run Code Online (Sandbox Code Playgroud)

.cpp

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();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

输出:

其他:0 - 名称:“Teredo 隧道伪接口”

其他: 1 - 名称:“以太网”

其他: 1 - 名称:“VirtualBox Host-Only Network”

我在 Windows 10 上运行;Qt 5.9.4 与 MSVC2015

我使用英特尔无线网卡和外部 USB Wifi 棒进行了检查。为什么不显示任何 WLAN?

小智 1

我有同样的问题。对我来说是由缺少承载插件 DLL 引起的。

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

像这样:

  • 应用程序文件夹/
    • 应用程序
    • ...
    • Qt5Network.dll
    • 承载者/
      • qgenericbearer.dll
      • qnativewifibearer.dll