最终编辑:我在下面编写的代码有效,因此请忽略我编写的所有内容。似乎当我将输入文本文件复制到构建目录时,该文件在进程中以某种方式损坏,这导致我的外部可执行文件“prog”中断。很抱歉浪费您的时间,并感谢所有试图提供帮助的人!
我刚刚开始使用 Qt 并且有一个名为 test_tiny 的项目。在我的项目的 build 文件夹(可执行 test_tiny 所在的位置)中,我移动了另一个名为“prog”的小 C++ 可执行文件,它从文件中读取,执行它的操作,然后输出到不同的文件。输入文件也在构建目录中。
我还有一个带有几个文本框和几个按钮的窗口。我想通过按下这些按钮之一来运行我的外部程序“prog”。这是我到目前为止所得到的:
void MainWindow::load2() {
QProcess *process = new QProcess(this);
process->start("./prog");
qDebug() << process->exitCode();
ui->textBrowser_2->clear();
ui->textBrowser_2->insertPlainText(read(":/File/out.txt"));
}
第二部分工作得很好——它从 out.txt 文件中读取并将其加载到文本浏览器中。但是,我的进程似乎没有运行,并且 exitCode() 总是返回零(我在“prog”中将其更改为 100)。
据我了解,QProcess 的工作目录(除非另有说明)设置为其构建文件夹,因此调用process->start("./prog");
应该可以工作,但它没有。我也尝试通过引用 aQResource
以及给出完整路径来调用它,但无济于事。
任何帮助将不胜感激,谢谢!
我正在使用基于在 x64 Ubuntu 12.04 上运行的 Qt 5.1.1 的 Qt Creator 2.81。
编辑:我忘了提到可执行文件“prog”只解析几行文本并将它们输出到一个文件,然后读取并输出到一个文本框。外部程序“prog”实际上似乎没有运行,我已经尝试过使用process->waitForFinished()
.