在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.";
}