目录
- QProcess
- 启动外部程序的两种方式
- 依赖式
- 分离式:
- 启动进程前的预处理
- 设置启动路径
- 设置启动命令参数
- 启动的状态
- 更多说明
- Public Functions
- Signals
- 设计一个拉起进程的程序
- 基本设计思路
- 效果图
- 核心代码
- 控件对象
- header file(头文件)
- member variable(成员变量)
- 【选择应用】按钮的槽函数
- 【拉起进程】按钮的槽函数
- 【杀死进程】按钮的槽函数
- UI布局
- 组织架构
- 测试效果
- Qt解析命令行参数
- 命令说明
- 增加命令
- 解析命令
- 设计一个后台进程的程序
- 组织架构
- 核心代码
- 通过Cmd进行测试命令行参数
- 文件输出
- 后续
QProcess
用于完成启动外部程序,并与其交互通信。
启动外部程序的两种方式
依赖式
外部程序启动后,将随主程序的退出而退出。
分离式:
外部程序启动后,当主程序退出时并不退出,而是继续运行。
启动进程前的预处理
设置启动路径
可以提前设置启动路径,也可以在start方法中进行设置。
设置启动命令参数
可以提前设置启动命令参数也可以不设置(非必须),也可以在start方法中进行设置。
启动的状态
1、外部程序未启动时,状态是NotRunning
;
2、外部程序启动时,状态是Starting
;
3、外部程序启动之后,状态是Running
,并发出started()
信号,此时可对QProcess
进行RW操作;
4、外部程序退出时,状态是NotRunning
,并发出finished()
信号。finished()
信号会包含退出码和退出状态信息,可通过exitCode()
和exitStatus()
来获得。
5、外部程序发生错误时,Qprocess
会发出一个error()
信号,可通过error()
来获得其错误类型,通过state()
获得当前程序的状态。
更多说明
有更多想了解Qprocess类的信息,可阅读Qt 助手。 下面列出了,所有可调用的方法。
Public Functions
Signals
设计一个拉起进程的程序
基本设计思路
1、点击【选择应用】按钮,即可打开文件资源管理器。选择需要拉起的应用,即可在后面的label中显示绝对路径。然后在【添加命令行参数】区域下方添加已注册好的命令以及期望值(这个命令行参数将会在后面介绍)。
2、然后点击右上区域的【拉起进程】按钮,然后会在【日志输出】区域输出拉起成功与否的日志说明和PID号等。最后可以通过【杀死进程】来结束该进程。
效果图
核心代码
控件对象
【添加命令行参数】区域的控件对象为:textEdit
【日志输出】区域的控件对象为:textEdit_2
【选择应用】按钮的控件对象为:pushButton
【拉起进程】按钮的控件对象为:pushButton_3
【杀死进程】按钮的控件对象为:pushButton_2
header file(头文件)
member variable(成员变量)
【选择应用】按钮的槽函数
【拉起进程】按钮的槽函数
【杀死进程】按钮的槽函数
UI布局
组织架构
测试效果
Qt解析命令行参数
Qt可以通过QCommandLineParser
和 QCommandLineOption
类可以对命令行进行解析。
命令说明
增加命令
解析命令
设计一个后台进程的程序
组织架构
核心代码
通过Cmd进行测试命令行参数
文件输出
后续
这时其实还不能完整调用,因为部分环境还没有。所以还需要对这个程序进行打包发布。后续将会介绍Qt自带的打包工具。本文内容太多了,就下一篇文中介绍吧。