在现有的 QtWidget 中嵌入 gnuplot

ctz*_*dev 6 c++ windows qt gnuplot

我正在用 C++ 创建一个(伪)实时绘图应用程序,使用 gnuplot 作为我的绘图后端。我的要求之一是绘图必须在现有窗口内,而不是具有单独的绘图窗口(gnuplot 默认为该窗口)。

Gnuplot 有一个选项来指定 (Qt) 小部件 ID,这似乎适合我的用例:

set terminal qt widget <id>
Run Code Online (Sandbox Code Playgroud)

我尝试在 my 内部传递值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();
}
Run Code Online (Sandbox Code Playgroud)

在 gnuplot 中:

gnuplot> set term qt widget <value from effectiveWinId>
gnuplot> plot x
Could not connect to existing qt widget. Starting a new one.
Run Code Online (Sandbox Code Playgroud)