文档章节

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

小熊宝宝
 小熊宝宝
发布于 2014/06/06 14:30
字数 249
阅读 216
收藏 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.6K
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
924
0

没有更多内容

加载失败,请刷新页面

加载更多

java框架学习日志-7(静态代理和JDK代理)

静态代理 我们平时去餐厅吃饭,不是直接告诉厨师做什么菜的,而是先告诉服务员点什么菜,然后由服务员传到给厨师,相当于服务员是厨师的代理,我们通过代理让厨师炒菜,这就是代理模式。代理...

白话
42分钟前
6
0
Flink Window

1.Flink窗口 Window Assigner分配器。 窗口可以是时间驱动的(Time Window,例如:每30秒钟),也可以是数据驱动的(Count Window,例如:每一百个元素)。 一种经典的窗口分类可以分成: 翻...

满小茂
42分钟前
3
0
my.ini

1

architect刘源源
58分钟前
6
0
docker dns

There is a opensource application that solves this issue, it's called DNS Proxy Server It's a DNS server that solves containers hostnames, if could not found a hostname that mat......

kut
今天
5
0
寻找数学的广度——《这才是数学》读书笔记2700字

寻找数学的广度——《这才是数学》读书笔记2700字: 文|程哲。数学学习方式之广:国内外数学教育方面的专家,进行了很多种不同的数学学习方式尝试,如数学绘本、数学游戏、数学实验、数学步道...

原创小博客
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部