在QT中为wifi连接设置静态IP

时间:2015-02-23 12:00:40

标签: qt wifi qml

我正在尝试创建一个扫描和连接WiFi网络的基于QT的应用程序。我使用this example作为参考代码。

  1. 是否可以使用QNetworkConfiguration或任何相关类为WiFi连接分配静态IP?
  2. 如何验证受密码保护的网络?
  3. 提前感谢......

    我使用以下代码集创建了一个网络会话..

    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();
    }
    

1 个答案:

答案 0 :(得分:1)

不,你不能。至少不只是Qt API。

请阅读this,特别是thisQNetworkConfiguration只是管理网络配置的工具。对本机代码/ OS交互要求编辑这样的配置。从第二个链接:

  

请注意,QNetworkConfiguration对象仅提供有关配置详细信息本身的有限信息。它的主要目的是充当配置标识符,通过它可以创建,销毁和监控链路层连接。

即使是“启动/停止网络接口”声明也不完全正确,因为此类功能仅在某些操作系统(不是移动操作系统)中可用。有关详细信息,请参阅第二个链接的“平台功能”部分。

同样的理由适用于密码问题。一旦在操作系统中使用相应的密码注册网络(由于本机代码或用户物理注册它),NetworkConfigurationManager可以使用新配置,并且可以通过{{3}更新配置列表}。新配置包含密码,但您无法从Qt API编辑它。

如上所述,本机代码是唯一的解决方案。仍然是updateConfigurations(),因为私有API无法在iOS中使用&gt; 5.1(Qt支持的最旧版本和Qt 5.4)。