【代码片段】Qt6.2.4 QProcess使用(打开外部程序,运行命令,同步、阻塞方式)
参考
- https://blog.csdn.net/qq_38232598/article/details/100745552
- https://www.cnblogs.com/lsgxeva/p/12641707.html
注意
new QProcess(this);
中的传入的this是窗口的this。
关闭外部程序、命令失败的方法参考: 【代码片段】Qt6.2.4 QProcess 打开外部程序后关闭失败解决办法
QProcess类
QProcess类是Qt中专门用于启动一个外部程序进程并与主程序通信的。此类中包含多个静态函数和信号,可以方便地通过信号与槽机制实现信息互通。
我们要实现快速调用外部程序,常用的有三个接口函数:
QProcess::execute()
: 此函数是以阻塞的方式打开外部程序,只有外部程序执行完成后,主程序才会继续执行。外部程序的标准输出、标准错误都是重定向到主程序的标准输出和标准错误的。
QProcess::start()
: 此函数是以子进程的 方式打开外部程序的,外部进程与主程序互不干扰,但外部进程的父进程就是主程序。
QProcess::startDetached()
: 此函数是以分离的方式打开外部程序的,外部程序与主程序互不干扰,外部进程的父进程是系统的init进程。
代码
同步等待命令行返回
QProcess process(this);
process.setProgram("cmd");
//
QStringList argument;
argument << "/c" << " arp -a";
//
process.setArguments(argument);
process.start();
process.waitForStarted(); //等待程序启动
process.waitForFinished();//等待程序关闭
QByteArray qbt = process.readAllStandardOutput();
QString msg = QString::fromLocal8Bit(qbt);
qDebug() << msg;
非阻塞子进程方式
/**
* 子进程方式(非阻塞)
* */
QProcess *myProcess = new QProcess(this);
QStringList arguments;
arguments << "arp -a";
myProcess->start("cmd.exe", arguments);
博 主 :夏秋初
地 址 :https://www.cnblogs.com/xiaqiuchu/p/16724571.html
如果对你有帮助,可以点一下 推荐 或者 关注 吗?会让我的分享变得更有动力~
转载时请带上原文链接,谢谢。
地 址 :https://www.cnblogs.com/xiaqiuchu/p/16724571.html
如果对你有帮助,可以点一下 推荐 或者 关注 吗?会让我的分享变得更有动力~
转载时请带上原文链接,谢谢。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2019-09-23 【转载|不建议使用】Laravel 生成二维码的方法