我正在用C ++创建一个(伪)实时绘图应用程序,使用gnuplot作为我的后端进行绘图。我的一个要求是,绘图必须位于现有窗口内,而不是具有单独的绘图窗口(gnuplot默认为)。
Gnuplot可以选择指定(Qt)小部件ID,这似乎符合我的用例:
set terminal qt widget <id>
我尝试将QtWidget::effectiveWinId()
内的值传递无效。
更新:尝试使用窗口ID QtWidget::winId()
的内部值,但也没有运气。
问题是我找不到<id>
应该是什么的任何文档。这是gnuplot的开发者想要的吗?
以下是我的代码示例:
#include <QtWidgets/QApplication>
#include <QtWidgets/QWidget>
#include <QtNetwork/QLocalSocket>
int main()
{
QApplication app(argc, argv);
QWidget win(nullptr, Qt::Window);
QWidget *window = win.window();
win.show();
std::cout << "effective win id: " << window->effectiveWinId() << "\n";
std::cout << "effective win id: " << win.effectiveWinId() << "\n";
return app.exec();
}
在gnuplot中:
gnuplot> set term qt widget <value from effectiveWinId>
gnuplot> plot x
Could not connect to existing qt widget. Starting a new one.