网上的教程基本没有交互的过程,官网也没有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设计师托拉拽就完成了,但是为了可维护,后续应该改为代码布局(需要的伙伴可以自己修改)
Alt

3.2 - 界面的各种响应

  Enter键需要响应鼠标和键盘,随后触发write()函数;Clear键(lineEdit)需要响应鼠标,随后触发lineEdit的clear()函数;Clear键(textEdit)需要响应鼠标,随后触发textEdit的clear()函数
Alt

3.3 - QProcess的各种响应

  比较关心的QProcess信号有读就绪-readyRead()、标准读就绪-readyReadStandardOutput()、产生错误-errorOccurred()和进程完成-finished(),其中读就绪和标准读就绪对于cmd.exe而言没有区别,如果读的来源是文件,那么标准读就绪信号不会发生,为了兼容,这里两个都写上,信号对应的槽处理如下

QProcess信号
readyRead
readyReadStandardOutput
errorOccurred
finished
read_data
error_process
finished_process

  最后有一些细节比如输入焦点的改变等等就不再介绍,现在只是一个简易的交互界面

3.4 - 运行结果

Alt

04 - 源代码

  链接百度网盘 提取码:rc7i

05 - 总结

  • 简单实现了与cmd.exe的交互,后续可以进行开发
  • 界面简陋,使用拖拽,后期应该改为代码布局
  • 不止是cmd.exe,其它外部程序也可以,要稍作修改

  

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐