我正在尝试创建一个扫描和连接WiFi网络的基于QT的应用程序。我使用this example作为参考代码。
提前感谢......
我使用以下代码集创建了一个网络会话..
void BearerMonitor::createNewSessionFromQml(QString ssid)
{
QList<QNetworkConfiguration> allConfigurations = manager.allConfigurations();
while (!allConfigurations.isEmpty()) {
QNetworkConfiguration config = allConfigurations.takeFirst();
if(config.name()==ssid)
createSessionFor(config);
}
}
SessionWidget::SessionWidget(const QNetworkConfiguration &config, QObject *parent):QObject(parent)
{
session = new QNetworkSession(config, this);
session->open();
}
答案 0 :(得分:1)
不,你不能。至少不只是Qt API。
请阅读this,特别是this。 QNetworkConfiguration
只是管理网络配置的工具。对本机代码/ OS交互要求编辑这样的配置。从第二个链接:
请注意,QNetworkConfiguration对象仅提供有关配置详细信息本身的有限信息。它的主要目的是充当配置标识符,通过它可以创建,销毁和监控链路层连接。
即使是“启动/停止网络接口”声明也不完全正确,因为此类功能仅在某些操作系统(不是移动操作系统)中可用。有关详细信息,请参阅第二个链接的“平台功能”部分。
同样的理由适用于密码问题。一旦在操作系统中使用相应的密码注册网络(由于本机代码或用户物理注册它),NetworkConfigurationManager
可以使用新配置,并且可以通过{{3}更新配置列表}。新配置包含密码,但您无法从Qt API编辑它。
如上所述,本机代码是唯一的解决方案。仍然是updateConfigurations()
,因为私有API无法在iOS中使用&gt; 5.1(Qt支持的最旧版本和Qt 5.4)。