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. Redis的主从复制与高可用搭建(哨兵模式)
  2. MuJoCo要开源!DeepMind收购物理引擎MuJoCo,将推动全球机器人研发
  3. MSMQ: C# MSMQ编程问题
  4. table 在网页无法顶到头部问题
  5. Linux创建文件系统的命令及xfs文件系统介绍
  6. QWidget中加载QML页面并设置透明背景
  7. QT —— 应用程序发布
  8. 一文了解GaussDB 200的产品架构、数据流程、组网方案、服务部署原则、企业级增强特性......
  9. .net项目开发工具(V2.0)异常报告专帖
  10. java 二进制是什么类型_Java基础类型与其二进制表示
  11. Git环境配置(案例:clone bert源码到本地仓库)
  12. innodb是mysql几的_MySQL几个和innodb相关的参数
  13. 5.Prometheus 监控技术与实践 --- PromQL
  14. shell :将标准输出及标准错误输出写到指定文件
  15. idea中使用git提交代码步骤
  16. Wider Face数据集详解
  17. 车牌识别--opencv(python)
  18. 皮皮虾无水印解析源码实战
  19. matlab 求特征值的命令,matlab中求解特征值方程函数eig
  20. halcon学习-算子学习

热门文章

  1. Shell同时推送代码至github和gitee的解决办法
  2. Linux SSH保持连接(解决Broken pipe)
  3. VBS操作Excel数据
  4. 自己的 「 代码制造 check list 」
  5. 2022-01-12总结 CSS开篇
  6. oracle Plsql 执行update或者delete时卡死问题解决办法
  7. System.Security.Cryptography.RSA.FromXmlString 系统找不到指定的文件和X509读取证书文件系统找不到指定的文件异常
  8. Android MVP Presenter 中引发的空指针异常
  9. [解决方案]WebAPI+SwaggerUI部署服务器后,访问一直报错的问题
  10. docker 容器启动后立马退出的解决方法