C++ QNetworkConfigurationManager::allConfigurations()不';t列表无线局域网
在Windows 10下运行,使用两种不同的系统进行测试: 当我运行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
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();
}
}
}