Qt 使用QProcess类执行py文件

 在Qt中运行py文件的代码实现如下:

QProcess *process = new QProcess;
process->start("python "+dir.path()+"/send.py\n");
process->waitForStarted(); //等待程序启动

QProcess 是是Qt 框架中用于启动外部进程、与之通信并管理其生命周期的类。它非常适合用于需要与外部程序进行交互的应用程序

 头文件:   #include <QProcess>
 qmake:  QT += core Inherits: QIODevice

常用函数如下:
start()启动一个外部进程

//示例
QProcess process;
process.start("ping", QStringList() << "www.baidu.com");

waitForFinished()  等待进程完成,或超时

//示例
process.waitForFinished(-1); // 无限等待直到进程结束

write()    向进程的标准输入(stdin)写数据。

//示例
process.write("some input\n");

readAllStandardOutput()    读取进程的标准输出。

QByteArray output = process.readAllStandardOutput();
qDebug() << output;

readAllStandardError()    读取进程的标准错误输出。

QByteArray errorOutput = process.readAllStandardError();
qDebug() << errorOutput;

terminate()    请求进程终止

process.terminate();

kill()   强制杀死进程。

process.kill();

setProgram() 和setArguments()  分别设置要执行的程序及其参数。

QProcess process;
process.setProgram("ping");
process.setArguments(QStringList() << "www.baidu.com");
process.start();

setWorkingDirectory()   设置进程的工作目录。

process.setWorkingDirectory("/path/to/directory");

setEnvironment()    设置进程的环境变量。

QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("MY_VAR", "my_value");
process.setEnvironment(env.toStringList());

state()   获取进程的当前状态,返回一个 `QProcess::ProcessState` 值。

QProcess::ProcessState state = process.state();
if (state == QProcess::Running) {
    qDebug() << "Process is running.";
} else if (state == QProcess::NotRunning) {
    qDebug() << "Process is not running.";
}

finished() 信号  进程结束时发出。

QObject::connect(&process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
                 [](int exitCode, QProcess::ExitStatus exitStatus){
    qDebug() << "Process finished with exit code" << exitCode;
});

errorOccurred()  信号   当发生错误时发出信号

QObject::connect(&process, &QProcess::errorOccurred, [](QProcess::ProcessError error){
    qDebug() << "Process error occurred:" << error;
});

waitForStarted()   等待进程启动。

if (!process.waitForStarted()) {
    qDebug() << "Failed to start process.";
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值