文档章节

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

小熊宝宝
 小熊宝宝
发布于 2014/06/06 14:30
字数 249
阅读 183
收藏 1
点赞 0
评论 0

运行: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
博文 8
码字总数 1379
作品 1
鞍山
其他
QProcess与外部程序的调用

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

jl88747653 ⋅ 2014/10/15 ⋅ 0

从QProcess说开来(一)

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

晨曦之光 ⋅ 2012/05/08 ⋅ 0

从QProcess说开来(二)

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

晨曦之光 ⋅ 2012/05/08 ⋅ 0

Linux下QT中执行shell命令

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

ustbgaofan ⋅ 2014/08/18 ⋅ 0

QT QProgress的使用

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

晨曦之光 ⋅ 2012/04/13 ⋅ 0

Qt应用程序自动重启(零零散散)

老有人问如何让Qt的应用程序自动重启,稍微写一点,也顺便理理自己的思路 2011.10.26 自动重启,也就是退出当前进程,启动一个新的进程。于是,先看程序如何退出 退出 Qt程序的一般结构如下:...

晨曦之光 ⋅ 2012/05/08 ⋅ 0

Qt打开外部exe,并将其嵌入到qt界面中

我现在需要用QProcess打开外部exe,并打开的外部界面嵌入到Qt的UI界面中,请问大神们怎样能实现此功能?谢谢啦.... Qt打开外部exe已经实现,不过是一个独立的窗口,现在我需要将它嵌入到qt界...

闹腾的小逗比 ⋅ 05/05 ⋅ 0

请问一下,在QT中创建一个button,点击后如何调用一个外部程序

用了QProcess,但按下按键后并没有相应的程序调用。 具体程序如下: void photo::onpushButton3_clicked() { QProcess *myProcess = new QProcess(); myProcess->start("D:/Downloads/sp/WP......

木A木 ⋅ 2017/04/27 ⋅ 2

Qt技术应用常见问题解答

1、如果在窗体关闭前自行判断是否可关闭   答:重新实现这个窗体的closeEvent()函数,加入判断操作   Quote:   void MainWindow::closeEvent(QCloseEvent *event)   {   if (maybe...

barsoom ⋅ 2012/11/28 ⋅ 0

常见的几个Qt编程问题的处理

1、如果在窗体关闭前自行判断是否可关闭 答:重新实现这个窗体的closeEvent()函数,加入判断操作 引用 void MainWindow::closeEvent(QCloseEvent *event) { if (maybeSave()) { writeSettin...

红薯 ⋅ 2010/09/09 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

NFS介绍 NFS服务端安装配置 NFS配置选项

NFS介绍 NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导...

lyy549745 ⋅ 29分钟前 ⋅ 0

Spring AOP 源码分析 - 筛选合适的通知器

1.简介 从本篇文章开始,我将会对 Spring AOP 部分的源码进行分析。本文是 Spring AOP 源码分析系列文章的第二篇,本文主要分析 Spring AOP 是如何为目标 bean 筛选出合适的通知器(Advisor...

java高级架构牛人 ⋅ 52分钟前 ⋅ 0

HTML-标签手册

标签 描述 <!--...--> 定义注释。 <!DOCTYPE> 定义文档类型。 <a> 定义锚。超链接 <abbr> 定义缩写。 <acronym> 定义只取首字母的缩写。 <address> 定义文档作者或拥有者的联系信息。 <apple......

ZHAO_JH ⋅ 53分钟前 ⋅ 0

SylixOS在t_main中使用硬浮点方法

问题描述 在某些使用场景中,应用程序不使用动态加载的方式执行,而是跟随BSP在 t_main 线程中启动,此时应用代码是跟随 BSP 进行编译的。由于 BSP 默认使用软浮点,所以会导致应用代码中的浮...

zhywxyy ⋅ 今天 ⋅ 0

JsBridge原理分析

看了这个Github代码 https://github.com/lzyzsd/JsBridge,想起N年前比较火的Hybrid方案,想看看现在跨平台调用实现有什么新的实现方式。代码看下来之后发现确实有点独特之处,这里先把核心的...

Kingguary ⋅ 今天 ⋅ 0

Intellij IDEA神器常用技巧五-真正常用快捷键(收藏级)

如果你觉得前面几篇博文太啰嗦,下面是博主多年使用Intellij IDEA真正常用快捷键,建议收藏!!! sout,System.out.println()快捷键 fori,for循环快捷键 psvm,main方法快捷键 Alt+Home,导...

Mkeeper ⋅ 今天 ⋅ 0

Java 静态代码分析工具简要分析与使用

本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能、特性等方面对它们进行分析和比较,...

Oo若离oO ⋅ 今天 ⋅ 0

SpringBoot自动配置小记

spring-boot项目的特色就在于它的自动配置,自动配置就是开箱即用的本源。 不过支持一个子项目的自动配置,往往比较复杂,无论是sping自己的项目,还是第三方的,都是如此。刚接触会有点乱乱...

大_于 ⋅ 今天 ⋅ 0

React jsx 中写更优雅、直观的条件运算符

在这篇文字中我学到了很多知识,同时结合工作中的一些经验也在思考一些东西。比如条件运算符 Conditional Operator condition ? expr_if_true : expr_if_false 在jsx中书写条件语句我们经常都...

开源中国最帅没有之一 ⋅ 今天 ⋅ 0

vim编辑模式与命令模式

5.5 进入编辑模式 从编辑模式返回一般模式“Esc” 5.6 vim命令模式 命令 :“nohl”=no high light 无高亮,取消内容中高亮标记 "x":保存退出,和wq的区别是,当进入一个文件未进行编辑时,使...

弓正 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部