У меня есть приложение QT C ++, которое запускает программу Octave с использованием QProcess. Я могу общаться с ним, читая стандартный вывод / ошибку и записывая в его стандартный ввод, используя метод записи (например: octave-> write ("5 + 5 \ n");).
Как я уже говорил, я получаю ответ от октавы (из приведенного выше примера я получаю "ans = 10").
Однако, когда команда, которую я пишу в стандартный ввод Octave, имеет «сюжет» (например, простой сюжет ([1 2 3 4 5]);), фактическая графика никогда не отображается. Я знаю, что Octave запускает gnuplot, он у меня установлен и gnuplot_x11 тоже. Я даже изменяю двоичный путь gnuplot в моем процессе Octave, выполняя gnuplot_binary ("/ usr / bin / gnuplot"); из моего приложения. Я знаю, что это работает хорошо, потому что, если я получаю новое значение, я получаю это правильно. Но я не знаю, почему Октава не показывает графику.
Здесь я начинаю октаву:
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());
Буду признателен за любую помощь, которую вы мне можете оказать.
Заранее спасибо.