×
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.
241 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×