×
Namespaces

Variants
Actions

如何用Qt设定网络接入方式

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

代码示例
源文件: Media:wifi.zip

兼容于
平台:
Symbian

文章
hozhou 在 04 Mar 2011 创建
最后由 hamishwillee 在 11 Oct 2012 编辑

Contents

引言

本文以一个例子程序为大家介绍如何使用Qt设定手机应用程序的网络接入方式。例子程序的功能是强制应用程序使用WLAN打开网页,如果没有WLAN可用时才使用默认的接入方式。(当然打开网页只是一个应用方向,我们也可以以选定的接入方式直接收发数据)。


主要代码

首先在构造函数中:

    accessmanager = new QNetworkAccessManager();
configmanager.updateConfigurations ();
connect(&configmanager, SIGNAL(updateCompleted ()), this, SLOT(scanFinished()));

调用updateConfigurations()的目的是更新系统已知的所有NetworkConfigurations的当前状态信息。这个过程会有些慢,因此次函数被设置成了异步执行方式。当次函数执行完后,会发出一个updateCompleted ()的信号,当我们收到这个信号之后,我们就可以进行处理了,此时我们得到的NetworkConfigurations的信息都会是最新的。





下面我们来看scanFinished()函数是如何实现的:

void MainWindow::scanFinished()
{
qDebug()<< "come to void MainWindow::scanFinished()";
web = new QWebView(this);
web->resize(size());
 
QList<QNetworkConfiguration> allConfigurations = configmanager.allConfigurations();
QList<QNetworkConfiguration> myInterestConfigurations;
while (!allConfigurations.isEmpty())
{
QNetworkConfiguration temConfigration = allConfigurations.takeFirst();
qDebug()<< temConfigration.name();
qDebug()<< temConfigration.bearerType();
qDebug()<< temConfigration.state();
qDebug()<< temConfigration.isValid();
 
if(QNetworkConfiguration::BearerWLAN == temConfigration.bearerType ())
{
qDebug()<< "get a WLAN Configuration";
myInterestConfigurations.append(temConfigration);
}
}
 
qDebug()<< "***************************************";
 
while(!myInterestConfigurations.isEmpty())
{
QNetworkConfiguration mytemConfigration = myInterestConfigurations.takeFirst();
 
if(QNetworkConfiguration::Discovered == mytemConfigration.state())
{
qDebug()<< "Configuration Name:" << mytemConfigration.name();
qDebug()<< "setting Configuration now ... " ;
accessmanager->setConfiguration(mytemConfigration);
 
web->page()->setNetworkAccessManager(accessmanager); // !!force webpage to use WLAN,
break; // !!or we can just use this accessmanager to send and receive data
}
 
}
 
qDebug()<< "opening webpage ... " ;
web->load(QUrl("http://www.baidu.com"));
web->showMaximized();
}

我们通过configmanager.allConfigurations();来获得当前所有系统已知的NetworkConfigurations,如果这个Configuration是WLAN,并且其状态是可用的,于是我们就让accessmanager 使用这个Configuration。接下来的事情就是使用这个accessmanager 了。我们既可以直接使用这个accessmanager 来收发数据,accessmanager 的所以操作自然是通过WLAN来完成的。我们也可以把这个accessmanager 赋给webpage,于是webpage就使用WLAN的方式进行打开网页的操作了。

下载例程

Media:wifi.zip

相关链接

This page was last modified on 11 October 2012, at 04:19.
317 page views in the last 30 days.
×