如何在Windows上用Qt调用cmd命令行并获得命令结果(+源代码)
文章目录01 - 适用场合02 - 环境要求03 - 操作步骤3.1 - 界面3.2 - 界面的各种响应3.3 - QProcess的各种响应3.4 - 运行结果04 - 源代码05 - 总结 网上的教程基本没有交互的过程,官网也没有Demo,只有一堆API说明,小白调试一段时间后才运行成功,界面参考了这篇文章,突破点参考了这篇文章,最后整理在一起分享,直接要源码运行的跳转这里01 - 适...
文章目录
网上的教程基本没有交互的过程,官网也没有Demo,只有一堆API说明,小白调试一段时间后才运行成功,界面参考了这篇文章,突破点参考了这篇文章,最后整理在一起分享,直接要源码运行的跳转这里
01 - 适用场合
Qt需要调用一个外部程序,并持续进行交互直到用户退出,期间获得各种调用结果(特别针对cmd命令行)
02 - 环境要求
Windows10、Qt 5.6以上(本人是Qt5.6.1)
03 - 操作步骤
核心是使用Qt的QProcess类,先用connect()连接QProcess的各种响应,然后start()一个cmd.exe进程,维持着与cmd.exe交互的过程,途中使用write()把命令写入cmd.exe,然后槽函数响应得到命令结果,最后在界面上显示
3.1 - 界面
因为懒,界面使用UI设计师托拉拽就完成了,但是为了可维护,后续应该改为代码布局(需要的伙伴可以自己修改)
3.2 - 界面的各种响应
Enter键需要响应鼠标和键盘,随后触发write()函数;Clear键(lineEdit)需要响应鼠标,随后触发lineEdit的clear()函数;Clear键(textEdit)需要响应鼠标,随后触发textEdit的clear()函数
3.3 - QProcess的各种响应
比较关心的QProcess信号有读就绪-readyRead()、标准读就绪-readyReadStandardOutput()、产生错误-errorOccurred()和进程完成-finished(),其中读就绪和标准读就绪对于cmd.exe而言没有区别,如果读的来源是文件,那么标准读就绪信号不会发生,为了兼容,这里两个都写上,信号对应的槽处理如下
最后有一些细节比如输入焦点的改变等等就不再介绍,现在只是一个简易的交互界面
3.4 - 运行结果

04 - 源代码
链接:百度网盘 提取码:rc7i
05 - 总结
- 简单实现了与cmd.exe的交互,后续可以进行开发
- 界面简陋,使用拖拽,后期应该改为代码布局
- 不止是cmd.exe,其它外部程序也可以,要稍作修改
更多推荐

所有评论(0)