qt linux wifi,在linux,arm上的屏幕搜索wifi并连接(qt,多选择,wifi按信号排列)转...

这段代码展示了如何在Linux环境中,使用Qt进行WiFi网络扫描并连接。通过读取iwlist命令的输出,筛选出SSID和质量信息,然后根据信号强度排序,显示在Qt界面的单选按钮中供用户选择,点击按钮实现连接。

先上代码!!

#include "widget.h"

#include "ui_widget.h"

#include

#include

Widget::Widget(QWidget *parent) :

QWidget(parent),

ui(new Ui::Widget)

{

ui->setupUi(this);

int i =0;

int j =0;

int t =0;

QVBoxLayout *groupBoxLayout;

groupBoxLayout = new QVBoxLayout;

system("iwlist wlan1 scan >./temp ");

system("grep -E \"SSID|Quality\" temp >./grepTemp");

system("grep -v \"x00\" grepTemp >./temp");

QString fileName;

fileName = "/home/c/qt/WifiSelect/temp";

QFile file(fileName);

if (!file.open(QIODevice::ReadOnly | QIODevice::Text))

{

qDebug()<

return;

}

QTextStream in(&file);

QString line = in.readLine();

while (i<20)

{

line = in.readLine();

for(t=27;t

{

wifiName[i] +=line[t];

}

line = in.readLine();

for(t=28;t<30;t++)       //take off  other words

{

temp[i] +=line[t];

}

i++;

}

for(i=0;i<20;i++)

{

qDebug()<

qDebug()<

}

for(i=0;i<19;i++)

{

for(j=1;j<20;j++)

{

if(temp[i]

{

transfer = temp[i];

temp[i] = temp[j];

temp[j] = transfer;

transfer =wifiName[i];

wifiName[i] = wifiName[j];

wifiName[j] = transfer;

}

}

}

i =0;

j =0;

int k=0;

while(i<10)

{

if(wifiName[j] == '\0')

{

// break;

k++;

if(k ==10)

{

qDebug()<

QMessageBox messageBox;

messageBox.setText(tr("无法搜索WLAN信号"));

messageBox.setIcon(QMessageBox::Warning);

messageBox.exec();

}

}

else if(!(wifiName[j] =='\0'))

{

radioBtn[i] = new QRadioButton;

radioBtn[i]->setText(wifiName[j]);

groupBoxLayout->addWidget(radioBtn[i]);

i++;

}

j++;

}

/*

QTextStream in(&file);

QString line = in.readLine();

while (i<10)

{

line = in.readLine();

QString temp;

for(t=27;t

{

temp +=line[t];

}

qDebug()<

if(!(temp =='\0'))

{

radioBtn[i] = new QRadioButton;

radioBtn[i]->setText(temp);

groupBoxLayout->addWidget(radioBtn[i]);

i++;

}

}

*/

ui->groupBox->setLayout(groupBoxLayout);

//  system("ping 192.168.0.223");

}

Widget::~Widget()

{

delete ui;

}

void Widget::on_cancelBtn_clicked()

{

this->close();

}

void Widget::on_connectBtn_clicked()

{

if(radioBtn[0]->isChecked())

{

QString wifiName = radioBtn[0]->text();

QString wifiConnect = tr("iwconfig wlan1 essid \"%1\" ").arg(wifiName);

system(wifiConnect.toAscii());

}

if(radioBtn[1]->isChecked())

{

QString wifiName = radioBtn[1]->text();

QString wifiConnect = tr("iwconfig wlan1 essid \"%1\" ").arg(wifiName);

system(wifiConnect.toAscii());

}

if(radioBtn[2]->isChecked())

{

QString wifiName = radioBtn[2]->text();

QString wifiConnect = tr("iwconfig wlan1 essid \"%1\" ").arg(wifiName);

system(wifiConnect.toAscii());

}

if(radioBtn[3]->isChecked())

{

QString wifiName = radioBtn[3]->text();

QString wifiConnect = tr("iwconfig wlan1 essid \"%1\" ").arg(wifiName);

system(wifiConnect.toAscii());

}

if(radioBtn[4]->isChecked())

{

QString wifiName = radioBtn[4]->text();

QString wifiConnect = tr("iwconfig wlan1 essid \"%1\" ").arg(wifiName);

system(wifiConnect.toAscii());

}

if(radioBtn[5]->isChecked())

{

QString wifiName = radioBtn[5]->text();

QString wifiConnect = tr("iwconfig wlan1 essid \"%1\" ").arg(wifiName);

system(wifiConnect.toAscii());

}

if(radioBtn[6]->isChecked())

{

QString wifiName = radioBtn[6]->text();

QString wifiConnect = tr("iwconfig wlan1 essid \"%1\" ").arg(wifiName);

system(wifiConnect.toAscii());

}

if(radioBtn[7]->isChecked())

{

QString wifiName = radioBtn[7]->text();

QString wifiConnect = tr("iwconfig wlan1 essid \"%1\" ").arg(wifiName);

system(wifiConnect.toAscii());

}

if(radioBtn[8]->isChecked())

{

QString wifiName = radioBtn[8]->text();

QString wifiConnect = tr("iwconfig wlan1 essid \"%1\" ").arg(wifiName);

system(wifiConnect.toAscii());

}

if(radioBtn[9]->isChecked())

{

QString wifiName = radioBtn[9]->text();

QString wifiConnect = tr("iwconfig wlan1 essid \"%1\" ").arg(wifiName);

system(wifiConnect.toAscii());

}

QMessageBox messageBox;

messageBox.setText(tr("连接成功!"));

messageBox.exec();

this->close();

}

效果:

9ee0234471a8c6e193ad05b3181bfa9b.png

欢迎提问,请叫我红领巾

头文件:

#ifndef WIDGET_H

#define WIDGET_H

#include 

#include 

#include 

#include 

namespace Ui {

class Widget;

}

class Widget : public QWidget

{

Q_OBJECT

public:

explicit Widget(QWidget *parent = 0);

~Widget();

private:

Ui::Widget *ui;

QString transfer;

QString temp[20];

QString wifiName[20];

QRadioButton *radioBtn[10];

private slots:

void on_cancelBtn_clicked();

void on_connectBtn_clicked();

};

#endif // WIDGET_H

http://www.360doc.com/content/14/0523/13/6828497_380189731.shtml

解决Linux主机上的 远程MySQL客户端无法连接的问题

无法连接到 MySQL 数据库可能的原因有: 1. PHP 无法连接 MySQL 可能是 PHP 配置不正确,没加上连接 MySQL 的功能. 2. MySQL 软件包升级,但没有升级数据库,或安装 ...

ARM上的linux如何实现无线网卡的冷插拔和热插拔

ARM上的linux如何实现无线网卡的冷插拔和热插拔 fulinux 凌云实验室 1. 冷插拔 如果在系统上电之前就将RT2070/RT3070芯片的无线网卡(以下简称wlan)插上,即冷插拔.我们通 ...

如何在linux主机上运行&sol;调试 arm&sol;mips架构的binary

如何在linux主机上运行/调试 arm/mips架构的binary 原文链接M4x@10.0.0.55 本文中用于展示的binary分别来自Jarvis OJ上pwn的add,typo两道题 写这篇 ...

用shell脚本实现linux系统上wifi模式(STA和soft AP)的转换

转载请注明出处:http://blog.csdn.net/hellomxj1/ 功能:在linux系统上实现wifi STA与AP功能的转换 实现成果:1.加入wifipassword账户add_wi ...

应聘linux&sol;ARM嵌入式开发岗位

**************************************************************** 因为发在中华英才和智联招聘没有人采我所以我 在这里发布我的个人简历希望 ...

【Qt开发】【ARM-Linux开发】 QT在ARM上显示字体的问题

在PC机上利用QT开发的应用程序在设置字体时,在PC上运行,可根据自己的设置,字体随之变大或变小.而移植到ARM上运行时发现,显示字体与所设置的字体不用,字体普遍偏小.经过上网搜索发现,是环境变量字库 ...

孤荷凌寒自学python第六十一天在Fedora28版的linux系统上找搭建本地Mongodb数据服务

孤荷凌寒自学python第六十一天在Fedora28版的linux系统上找搭建本地Mongodb数据服务 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第七天.成功在本地搭建 ...

Linux主机上使用交叉编译移植u-boot到树莓派

0环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS: Debian Jes ...

请不要重复犯我在学习Python和Linux系统上的错误

本人已经在运维行业工作了将近十年,我最早接触Linux是在大二的样子,那时候只追求易懂,所以就选择了Ubuntu作为学习.使用的对象,它简单.易用.好操作.界面绚丽,对于想接触Linux的新手来说是非 ...

随机推荐

多彩的Console打印新玩法

Chrome应该是每一个Web开发者必备的工具之一.它有而强大的Devtool,辅助我们的JavaScript调试,审视DOM元素,CSS即时修改等.以及它还有一个的庞大的插件系统,同时我们也可以很容 ...

BAD APPLE C&plus;&plus;控制台程序

使用C++语言编写,如果想改成C语言,手动以GetProcAddress的方式来调用相关函数即可. #include #include

distribution数据库过大问题

从事件探查器中监控到如下语句执行时间查过 1分钟: EXEC dbo .sp_MSdistribution_cleanup @min_distretention = 0, @max_distreten ...

&lbrack;转载&rsqb; - QWidget、QMainWindow、QDialog和QFrame的区别

继承关系:在Qt中所有的类都有一个共同的基类QObject ,QWidget直接继承与QPaintDevice类,QDialog.QMainWindow.QFrame直接继承QWidget 类.   ...

access链接最原始代码,两种

using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web ...

Servlet中的转发与重定向

Sevlet 的转发与重定向都可以使得浏览器指向另一个资源文件,但它们的运行机制不相同. 一.Servlet的转发 有两种方式获得转发对象(RequestDispathcer): HttpServle ...

Tomcat&lpar;一&rpar;:背景知识和安装tomcat

Tomcat系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1. 基础背景知识 1.1 java和jdk概念 无论是何种程序,要能在计算机 ...

bzoj 3999 线段树区间提取 有序链剖

看错题目了,想成每个城市都可以买一个东西,然后在后面的某个城市卖掉,问最大收益.这个可以类似维护上升序列的方法在O(nlog^3n)的时间复杂度内搞定 这道题用到的一些方法: 1. 可以将有关的线段提 ...

VC&plus;&plus; MFC应用程序项目文件2&period;cpp

//GameServer.cpp: 定义应用程序的入口点. // #include "stdafx.h" #include "GameServer.h" #de ...

关于Java中System&period;gc&lpar;&rpar; 与System&period;runFinalization&lpar;&rpar;

System.gc  : 告诉垃圾收集器打算进行垃圾收集,而垃圾收集器进不进行收集是不确定的.只是建议进行回收 System.runFinalization(): 网上搜了一下很多人都说强制调用已经失 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值