文档章节

QT中调用外部程序:QProcess的使用

小熊宝宝
 小熊宝宝
发布于 2014/06/06 14:30
字数 249
阅读 203
收藏 1

运行:ipconfig

运行:ping www.baidu.com

程序共包含以下有一个文件:

//: main.cpp   

#include "process.h"   

#include    

#include    

int main(int argc, char *argv[])   

{   

     QApplication a(argc, argv);   

     QTextCodec::setCodecForTr(QTextCodec::codecForLocale());   

     QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());   

     Process w;   

     w.show();   

    return a.exec();   

}  

//: process.h   

#ifndef PROCESS_H   

#define PROCESS_H   

#include    

class QLabel;   

class QLineEdit;   

class QProcess;   

class QPushButton;   

class QTextEdit;   

class Process : public QWidget   

{   

     Q_OBJECT   

public:   

     Process(QWidget *parent = 0, Qt::WFlags flags = 0);   

     ~Process();   

private slots:   

    void runClicked();   

    void readOutput();   

private:   

     QProcess* cmd;   

     QString output;    

 

 

 //用于保存输出结果

     QLabel* inputLabel;   

     QLineEdit* inputEdit;   

     QPushButton* runButton;   

     QLabel* outputLabel;   

     QTextEdit* outputEdit;   

};   

#endif // PROCESS_H  

 

//: process.cpp   

#include    

#include "process.h"   

Process::Process(QWidget *parent, Qt::WFlags flags = 0)   

     : QWidget(parent, flags)   

{   

     inputLabel = new QLabel(tr("请输入命令:"));   

     inputEdit = new QLineEdit;   

     runButton = new QPushButton(tr("运行"));   

     outputLabel = new QLabel(tr("运行结果如下:"));   

     outputEdit = new QTextEdit;   

     outputEdit->setReadOnly(true);   

     QHBoxLayout* hlayout = new QHBoxLayout;   

     hlayout->addWidget(inputEdit);   

     hlayout->addWidget(runButton);   

     QVBoxLayout* layout = new QVBoxLayout;   

     layout->addWidget(inputLabel);   

     layout->addLayout(hlayout);   

     layout->addWidget(outputLabel);   

     layout->addWidget(outputEdit);   

     setLayout(layout);   

       

     cmd = new QProcess;   

     connect(inputEdit, SIGNAL(returnPressed()), this, SLOT(runClicked()));   

     connect(runButton, SIGNAL(clicked(bool)), this, SLOT(runClicked()));   

     connect(cmd, SIGNAL(readyRead()), this, SLOT(readOutput()));   

     resize(500, 300);   

}   

Process::~Process()   

{   

}   

void Process::runClicked()   

{   

     QString input = inputEdit->text();    

//输入指令

     cmd->start(input);   

     output = tr("");   

     outputEdit->setText(output);   

}   

void Process::readOutput()   

{   

     output += cmd->readAll();   

     outputEdit->setText(output);   

}


本文转载自:http://blog.163.com/lucien_cc/blog/static/130290562201031211548668/

共有 人打赏支持
小熊宝宝

小熊宝宝

粉丝 12
博文 9
码字总数 1520
作品 1
鞍山
其他
QProcess与外部程序的调用

项目做到一定阶段,经常需要在原来的工程上调用外部程序。Qt为此提供了QProcess类,QProcess可用于完成启动外部程序,并与之交互通信。 一、启动外部程序的两种方式: (1)一体式:void QP...

jl88747653
2014/10/15
0
0
从QProcess说开来(一)

QProcess类的作用是启动一个外部的程序并与之交互。我们不妨看看:一个普通的控制台程序,与外界是如何交互的 简单控制台程序 一个程序如何从外界获取信息并向外输出信息呢? 命令行参数 大多...

晨曦之光
2012/05/08
2.1K
0
从QProcess说开来(二)

延续前面从QProcess说开来(一)的名字,换个角度继续学习。 QIODevice派生类 QProcess作为QIODevice的派生类,实现角度上看,它必须要重新实现下面两个成员函数: readData() writeData() 而后...

晨曦之光
2012/05/08
2.5K
0
Linux下QT中执行shell命令

当需要在QT中执行shell命令时可以利用以下方法: (1)首先包含头文件: #include <QProcess> (2)执行shell命令: QProcess::execute("ls"); ///////////////////// #include <QProcess> v......

ustbgaofan
2014/08/18
0
0
QT QProgress的使用

所谓 IO 其实不过是与其他设备之间的数据交互。在 Linux 上这个概念或许会更加清楚一些。Linux 把所有设备都看作是一种文件,因此所有的 IO 都归结到对文件的数据交互。同样,与其他进程之间...

晨曦之光
2012/04/13
902
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据框架对比:Hadoop、Storm、Samza、Spark和Flink

简介 大数据是收集、整理、处理大容量数据集,并从中获得见解所需的非传统战略和技术的总称。虽然处理数据所需的计算能力或存储容量早已超过一台计算机的上限,但这种计算类型的普遍性、规模...

hblt-j
23分钟前
2
0
正则介绍及grep/egrep用法

10月16日任务 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下 扩展 把一个目录下,过滤所有*.php文档中含有eval的行 grep -r --include="*.php" 'eval' /data 9.1 正则介绍_grep上 什么是正则 ...

zgxlinux
38分钟前
2
0
想用Unity3D引擎软件赚点钱的看过来

前言: 你可以不拥有很多钱 但你一定要有赚钱的能力 目前手上有项目, 需要熟练Unity3D引擎软件的伙伴 有意向的给我发私信

猿神出窍
40分钟前
2
0
Spring Boot全局异常处理

Spring Boot默认的异常处理机制 默认情况下,Spring Boot为两种情况提供了不同的响应方式。 一种是浏览器客户端请求一个不存在的页面或服务端处理发生异常时,一般情况下浏览器默认发送的请求...

狼王黄师傅
今天
8
0
Thinkphp5 优雅配置两个数据库

工作需要需要配置两个数据库,框架5.0的,步骤如下: 1、在database.php同级创建一个database2.php文件 在里面配置第二个数据库信息, 2、在config中配置这个数据库信息: 3、创建第二个表的...

wqzbxh
今天
5
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部