八度曲线从Qt c++应用程序
Octave plot from Qt C++ application
我有一个QT c++应用程序,它使用QProcess运行Octave程序。我能够通过读取标准输出/错误并使用写方法写入它的标准输入来与它通信(例如:octave->write("5 + 5n");)。
正如我告诉你的,我从octave获得响应(从上面的例子中,我得到"answers = 10")。
但是,当我写到Octave标准输入的命令有一个"plot"(例如,一个简单的plot([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());
我很感激你能给我的任何帮助。
Octave与Matlab一样,可以在批处理模式下运行,无需图形化UI即可执行计算。我假设Octave检测到它不是从交互式会话中运行的,因此自动进入批处理模式。当处于批处理模式时,您可能期望Octave抑制图形输出(例如gnuplot输出)。
尝试使用--interactive
命令行选项强制Octave进入交互模式:http://www.gnu.org/software/octave/doc/interpreter/Command-Line-Options.html
我知道你可能已经解决了你的问题,但这可能对其他…您可以尝试添加一个命令来将绘图保存在您的八度请求中的临时文件夹中。然后在ap
- Qt VTK交互风格的信号到小部件
- QT在错误的班级中寻找空位
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 如何在Qt C++中更改光标
- 如何在MS Visual Studio 2019中运行QT UI
- QT通过C++添加映射QML项目
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用Qt C++计算类似Git的SHA1哈希
- Qt focusObjectChanged example?
- 如何在cpp文件之间切换窗口?在Qt中
- Qt和C++:将QLineEdit添加到QTabWidget中
- 从数据库实时显示QT c++中的数据
- Qt Quick-如何仅从c++代码与qml属性交互
- 无法使用Qt Creator在Windows中构建yaml-cpp
- 如何在Qt中取消捕获字符串
- Qt SQLite没有查询或参数计数不匹配
- Qt SQlite无法创建表