我在Windows上的Qt中有一个应用程序,我想在按下按钮并将输出保存到plainTextEdit时运行.sh脚本。
这是我的代码:
void MainWindow::on_pushButtonSTART_clicked()
{
QProcess* process = new QProcess(this);
connect(process, &QProcess::readyReadStandardOutput, [=] {
ui->plainTextEditResults->setPlainText(process->readAllStandardOutput());
});
process->start("git-bash.exe", QStringList{QString("./"),"path/script1.sh"});
//ui->plainTextEditResults->setPlainText(QString::number(process->exitCode()));
}
脚本:(我尝试使用#!/ bin / bash,结果相同)
#!/bin/sh
echo "Hello World!"
问题是我的脚本无法运行(我尝试这样做,没有效果:
#!/bin/sh
echo "Hello World!" >> test.json)
但是exitCode()为0。 一些帮助?如果可以的话,我想在git-bash或cmd中运行脚本。
答案 0 :(得分:0)
git-bash.exe
在您的路径上吗?
否则,您将必须指定可执行文件的完整路径。 C:\Program Files\Git\git-bash.exe
。
答案 1 :(得分:0)
我已经解决了问题,因此状态代码为0(正常输出),并且没有非常快速地打开和关闭窗口。
第一次运行cmd,然后在cmd中调用bash,然后在bash中调用脚本
QProcess* process = new QProcess(this);
connect(process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
[=](int exitCode, QProcess::ExitStatus exitStatus){
ui->plainTextEditResults->appendPlainText(QString("exitStatus:") + QString::number(exitStatus));
ui->plainTextEditResults->appendPlainText(QString("exitStatus normal:") + QString::number(QProcess::NormalExit));
ui->plainTextEditResults->appendPlainText(QString("exitStatus crash:") + QString::number(QProcess::CrashExit));
ui->plainTextEditResults->appendPlainText(QString("exitCode:") +QString::number(exitCode));
});
processArgs+="/c \"\"C:\\Program Files\\Git\\bin\\bash.exe\" --login -i -- \"D:/path/script1.sh\"\"";
process->setNativeArguments(processArgs);
process->start("cmd.exe");