Qt 进程间通信

  • 1. 一个进程运行另一个进程
  • 2. 例程代码

1. 一个进程运行另一个进程

  • QtQProcess 类用来启动一个外部程序并与其进行通信。
  • 使用 start() 函数运行一个进程,之后 QProcess 进入 Starting 状态;
  • 当程序已经运行后,QProcess 就会进入 Running 状态并发送 started() 信号;
  • 当进程退出后,QProcess 重新回到 NoRunning 状态并发射 finished() 信号。

2. 例程代码

  • mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QProcess>namespace Ui {class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();private slots:void on_pushButton_clicked();void showResult();void showState(QProcess::ProcessState state);void showError();void showFinished(int,QProcess::ExitStatus);private:Ui::MainWindow *ui;QProcess myProcess;
};#endif // MAINWINDOW_H
  • mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QTextCodec>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);//添加信号和槽的关联connect(&myProcess,&QProcess::readyRead,this,&MainWindow::showResult);connect(&myProcess,&QProcess::stateChanged,this,&MainWindow::showState);connect(&myProcess,&QProcess::errorOccurred,this,&MainWindow::showError);connect(&myProcess,SIGNAL(finished(int,QProcess::ExitStatus)),this,SLOT(showFinished(int,QProcess::ExitStatus)));
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_clicked()
{//启动记事本程序,由于它在Windows的系统目录下,该目录已经加在了系统PATH环境变量中,所以不需要写具体路径//myProcess.start("notepad.exe");QString program = "cmd.exe";QStringList arguments;arguments<<"/c dir&pause";myProcess.start(program,arguments);
}void MainWindow::showResult()
{QTextCodec * codec = QTextCodec::codecForLocale();qDebug()<<"showResult: "<<endl<<codec->toUnicode(myProcess.readAll());
}void MainWindow::showState(QProcess::ProcessState state)
{qDebug()<<"showState: ";if(state == QProcess::NotRunning){qDebug()<<"No Running";}else if(state == QProcess::Starting){qDebug()<<"Starting";}else{qDebug()<<"Running";}
}void MainWindow::showError()
{qDebug()<<"showError:"<<endl<<myProcess.errorString();
}void MainWindow::showFinished(int exitcode, QProcess::ExitStatus exitStatue)
{qDebug()<<"showFinished:"<<endl<<exitcode<<exitStatue;
}

Qt一个进程运行另一个进程相关推荐

  1. (C++)wchar_t 转 string / TCHAR转为char/判断是否进程运行/获得目标进程的入口

    首先是wchar_t转string void Wchar_tToString(string& szDst, wchar_t* wchar) {wchar_t* wText = wchar;DW ...

  2. linux暂停一个在运行中的进程

    对于一个运行中的进程,我们可以使用kill -STOP pid命令将其暂停执行,使用kill -CONT pid命令恢复其运行. 下面用一个实例说明: 1.首先使用tar命令打包/usr目录: [ro ...

  3. 操作系统原理:进程与线程、进程生命周期、线程的类型

    一.进程定义 进程可以看成程序的执行过程,可以展示在当前时刻的执行状态.它是程序在一个数据集合上的一次动态执行的过程.这个数据集合通常包含存放可执行代码的代码段,存放初始化全局变量和初始化静态局部变量 ...

  4. Linux编程 7 (实时监测进程 top, 结束进程kill,killall)

    一. 实时监测进程 top 在一篇里讲到ps命令在收集进程信息时非常有用,但它只能显示某个特定时间点的信息.想要观察那些频繁换进换出的内存进程趋势,用top命令是合适的.使用top命令如下图所示: 在 ...

  5. Linux下 Qt界面程序嵌入另一个Qt界面程序_Qt应用嵌入外部进程窗口

    项目工程的实现,想要使用多个程序进行实现,在里面存在一定的调用的过程:调查的情况如下 Qt界面程序嵌入另一个Qt界面程序[Linux] Qt界面程序嵌入另一个Qt界面程序[Linux]_ptc321的 ...

  6. 一个或多个音频服务未运行 win7 错误1079:此服务的账户不同于运行于同一进程上的其他服务账户...

    一个或多个音频服务未运行 win7 错误1079:此服务的账户不同于运行于同一进程上的其他服务账户 启动任务管理器:右键计算机--管理--"服务和应用程序"选项--"服务 ...

  7. 如何使一个正在运行的进程慢下来?哦,不,是暂停

    sleep? renice? ionice? cpulimit? 连着上了两周班,搞的闷了一脸痘,右下巴起了个大包,现在还没好,我是谁?为了谁?为了兄弟姐妹不流泪?谁最美?谁最美? 那个周六还是我生日 ...

  8. 一个小故事讲明白进程、线程、Kotlin 协程到底啥关系?

    前言 协程系列文章: 一个小故事讲明白进程.线程.Kotlin 协程到底啥关系? 少年,你可知 Kotlin 协程最初的样子? 讲真,Kotlin 协程的挂起/恢复没那么神秘(故事篇) 讲真,Kotl ...

  9. Hook技术之4 在自己的进程中注入一个Dll到别人的进程

    与其说是一种技术,不如说是一种技术思想.它使用了前面讲的那些Hook手段,来达到自己的目的. 其应用环境是这样的,自己有一个进程在运行,这个进程是自己可以控制的,但由于业务的需要,自己又要执行另一个应 ...

最新文章

  1. mysql5.7系列修改root默认密码
  2. Ant Design源码分析(三):Wave组件
  3. Windows 2000和WindowsXP中神秘的数字签名
  4. Python多线程(1)——介绍
  5. jQuery工作原理解析以及源代码示例
  6. 微服务框架---搭建 go-micro环境
  7. 生成逼真3D人偶,居然不用3D形状建模,还能学会你的舞步 | 三星CVPR Oral
  8. 饥荒联机云服务器_GAMETECH腾讯云游戏行业技术沙龙成都站圆满落幕
  9. 虫师Selenium2+Python_11、自动化测试项目实战
  10. 当 p<1时,p 范数不满足三角不等式的证明 | p norm | triangle inequality
  11. 计算机网络第三章课后答案第七版(谢希仁著)
  12. c语言设计 教师信息管理系统 含源码及说明
  13. BZOJ1857: [Scoi2010]传送带(三分套三分)
  14. 浅析Saas、PaaS、laas、Caas、Daas服务理解总结
  15. [NepCTF]WEB
  16. magento mysql4-install_MAGENTO与表,数据字段的对应关系
  17. Elasticsearch 入门案例
  18. dellr420部署os_dell r720服务器OS部署
  19. redis之数据倾斜如何处理
  20. Arduino - RGB全彩LED模块

热门文章

  1. linux计划任务与日志管理(日志分割/切割)
  2. 工具| PocSuite 使用介绍
  3. 源码安装redis-3.2.11
  4. Windows下部署elasticsearch和kibana
  5. 【Linux】七种文件类型
  6. springboot Cacheable(redis),解决key乱码问题
  7. Python 3.x 中“HTTP Error 403: Forbidden“问题的解决方案
  8. ie不兼容的几个js问题及解决办法
  9. 异常:Caused by: java.lang.NoClassDefFoundError: Could not initialize class net.sf.log4jdbc.Properties
  10. python异常(概念、捕获、传递、抛出)