【发布时间】:2011-08-02 23:28:49
【问题描述】:
我有一个使用 QProcess 运行 Octave 程序的 QT C++ 应用程序。我可以通过读取标准输出/错误并使用 write 方法(例如:octave->write("5 + 5\n");)写入它的标准输入来与它通信。
正如我告诉你的那样,我得到了 octave 的响应(从上面的示例中,我得到“ans = 10”)。
但是,当我写到 Octave 标准输入的命令有一个“绘图”(例如,一个简单的绘图([1 2 3 4 5]);)时,实际的图形永远不会显示。我知道 Octave 运行 gnuplot,我已经安装了它,还有 gnuplot_x11。我什至通过执行 gnuplot_binary("/usr/bin/gnuplot"); 来更改 Octave 进程中的 gnuplot 二进制路径。从我的应用程序。我知道它运行良好,因为如果我检索到新值,我就会做对。但我不知道为什么 Octave 不显示图形。
这里我开始八度:
QStringList arguments;
arguments << "--persist";
octave->setProcessChannelMode(QProcess::MergedChannels);
octave->start("/usr/bin/octave", arguments);
这里我将命令写入八度进程:
if (octave->state() == QProcess::Running) {
QString command = widget.txtInput->toPlainText();
if (command.isEmpty()) {
return;
}
command += "\n";
octave->write(command.toAscii());
}
有了这个,我打印了对文本编辑的八度响应:
widget.txtOutput->append(octave->readAll() + "\n");
最后,我在八度音程开始时使用它:
QString gnuplot_path(tr("\"/usr/bin/gnuplot\""));
QString gnuplot_cmd(tr("gnuplot_binary(%1)\n").arg(gnuplot_path));
octave->write(gnuplot_cmd.toAscii());
如果您能给我任何帮助,我将不胜感激。
提前致谢。
【问题讨论】: