指点成金-最美分享吧

登录

QT实现ping命令

佚名 举报

篇首语:本文由小编为大家整理,主要介绍了QT实现ping命令相关的知识,希望对你有一定的参考价值。

#ifndef WIDGET_H
#define WIDGET_H

#include
#include
#include
#include
#include
#include
#include

QT_BEGIN_NAMESPACE
namespace Ui class Widget;
QT_END_NAMESPACE

class Widget : public QWidget

Q_OBJECT

public:
Widget(QWidget *parent = nullptr);
~Widget();
public slots:
void Myping();
private:
Ui::Widget *ui;
;
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)

ui->setupUi(this);
//使用正则表达式限制输入
ui->lineEdit_ip->setValidator(new QRegExpValidator(QRegExp("\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.)3(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b")));
connect(ui->pushButton_ip,&QPushButton::clicked,this,&Widget::Myping);


/* bool Widget::Myping()


QProcess exc;
QTextCodec *codec = QTextCodec::codecForName("utf-8");
// QString cmdstr="ping 192.168.110.179";//ping 192.168.110.179 -n 2 -w 4000
QString cmdstr=ui->lineEdit_ip->text();
exc.start(cmdstr);//执行ping
exc.waitForFinished(-1);//等待ping完成
QString outstr=codec->toUnicode(exc.readAll());//获取ping结果
ui->textBrowser->setText(outstr);

//返回不等于-1,说明ping结果包含"往返行程的估计时间"字段,则说明ping成功,网络可达;等于-1,表示没有此字段,说明ping不通
if((outstr.indexOf("往返行程的估计时间"))!=-1)

qDebug("ping通\n");
else

qDebug("ping失败\n");




*/
void Widget::Myping()

qDebug()<<QStringLiteral("开始点击");
ui->textBrowser->clear();
ui->textBrowser->setText(QStringLiteral("请等待"));
ui->textBrowser->update();
QProcess myProcess(this);
QString program = "C:/Windows/System32/cmd.exe";
QStringList arguments;
QString ipaddr;
// 正则表达式限制输入

ipaddr = ui->lineEdit_ip->text();
//用户输入的内容
QString message = "ping " + ipaddr;
//和ping命令拼接,字符串的拼接直接+链接就可
qDebug()<<message;
//将拼接后的结果在应用程序输出的位置打印一下
// 用于占位
//arguments=ui->lineEdit_ip->setInputMask("000.000.000.000; ");
//arguments <<"/c" <<"ping www.baidu.com";
arguments <<"/c" <<message;


myProcess.start(program,arguments);

while (myProcess.waitForFinished(100) == false)
QByteArray qByteRead = myProcess.readAllStandardOutput();
if (!qByteRead.isEmpty())
ui->textBrowser->append(QString::fromLocal8Bit(qByteRead));
repaint();


QByteArray qByteRead = myProcess.readAllStandardOutput();
ui->textBrowser->append(QString::fromLocal8Bit(qByteRead));

qDebug()<<QString::fromLocal8Bit(qByteRead);
//输出应用程序输出上
qDebug()<<"结束点击";




Widget::~Widget()

delete ui;

以上是关于QT实现ping命令的主要内容,如果未能解决你的问题,请参考以下文章