【发布时间】:2019-09-25 18:38:02
【问题描述】:
我尝试制作一个 gui 应用程序,正如我在标题中提到的那样,它以可能不是传统的方式执行脚本,但我没有任何其他想法,它可以在 ubuntu 中运行,但我在 raspberry 中需要相同的方式。我遇到的主要问题是,在覆盆子中,相同的脚本不起作用,Qt(按钮单击)在bash中执行脚本,该脚本使用命令octave --eval nameofscript.m在八度音阶中执行脚本在ubuntu中这有效,而在raspbian中则无效。我在没有使用 qt 的情况下在 bash 中尝试了这个脚本,它可以工作。这是我在 ubuntu 中工作的代码:
void MainWindow::on_pushButton_clicked()
{
QFile file ("/home/reg-ubu/build-testowy-Desktop-Debug/dane.txt");
QProcess process;
file.open(QIODevice::ReadOnly);
process.startDetached("/bin/sh", QStringList()<< "-c" << "bash skrypt.sh");
file.close();
}
我在 raspbian 中使用的相同。我注意到的是,当我在 raspbian Qt 中编写相同的代码时,它说 skrypt.sh 不存在,尽管它与项目的其他文件位于同一目录中。即使我写了与 skrypt.sh 完全相同的路径,它也会说我来自 octave 的脚本在octave --eval nameofscript 中未定义。即使我尝试在这个地方添加完全相同的路径,它也会毫无问题地运行,但我在文件中看不到新数据。 octave 的脚本非常简单:
s =55
plik = fopen('dane.txt','w');
fprintf(plik,'%d\n',s);
fclose(plik);
它仅用于测试它是否工作。 总结一下。它应该以这种方式工作: Qt 应用程序按钮单击 -> 运行 bash 脚本,该脚本运行 octave 脚本,将数据发送到 dane.txt 我尝试了以这种方式执行脚本的其他方法,但没有什么比我提到的更有效。
【问题讨论】: