Gnuplot qt terminal embedded in Pyqt application

I've made this sort of Scientific Visualization tool with Pyqt (Python with qt widgets as the GUI) and I have this main widget which acts as the terminal of Gnuplot. Currently, it is via the Gnuplot terminal - X11. Meaning I have this window with many buttons and a widget that shows the plots, graphs, etc in X11 terminal. However, X11 is pretty old and I saw that there is an option to switch the terminal of Gnuplot to QT, which seems trivial to embed a qt terminal to a pyqt application. However, I couldn't find anywhere if it's possible to do so with Python (PyQt) as the example in Gnuplot is in c++.

So, is there any way to make the qt terminal embed inside my Visualization tool? In Gnuplot X11 it's simple you just enter the widget id, but this doesn't seem to work in the same way for the qt terminal. Is it even possible?

I'm attaching the embedded code of c++:

 #include "embed_example.h"  
 #include "QtGnuplotWidget.h"

 QMainWindow* mainWindow;  
 GnuplotWidget::GnuplotWidget() : QWidget()  
{  
    QGridLayout* gridLayout = new QGridLayout();  
    for (int i = 0; i < 4; i++)  
    {  
        widgets[i] = new QtGnuplotWidget();  
        connect(widgets[i], SIGNAL(statusTextChanged(const QString&)),   this, SLOT(statusText(const QString&)));  
        widgets[i]->setFixedSize(400,250);  
        gridLayout->addWidget(widgets[i], i/2, i%2);  
    }  

    QVBoxLayout* layout = new QVBoxLayout(this);  
    layout->addLayout(gridLayout);  

    outputFrame = new QPlainTextEdit(this);  
    outputFrame->setReadOnly(true);  
/*  QFont font = outputFrame->document().defaultFont();
    font.setFamiliy("Mono");
    outputFrame->document().setDefaultFont(font);*/
    layout->addWidget(outputFrame);

    setLayout(layout);
    connect(&gp, SIGNAL(gnuplotOutput(const QString&)), this, SLOT(gnuplotOutput(const QString&)));
}

void GnuplotWidget::plot()
{
    gp.setWidget(widgets[0]);
    gp << "plot x w l lt 3\n";
    gp << "print pi\n";

    gp.setWidget(widgets[1]);
    gp << "set grid; plot x**2 w l lt 2 lw 4\n";

    gp.setWidget(widgets[2]);
    QVector<QPointF> points;
    srand(time(NULL));
    for (int i = 0; i < 100; i++)
        points << QPointF(double(rand())/double(RAND_MAX), double(rand())/double(RAND_MAX));
    gp << "plot '-'\n";
    gp << points;

    gp.setWidget(widgets[3]);
    gp << "unset grid\n";
    phi = 0.;
    connect(&timer, SIGNAL(timeout()), this, SLOT(tick()));
    timer.start(1000);
}

void GnuplotWidget::tick()
{
    gp << "plot sin(x + " + QString::number(phi) + ")\n";
    gp << "print pi, " + QString::number(phi) + "\n";
    phi += 0.3;
}

void GnuplotWidget::statusText(const QString& status)
{
    mainWindow->statusBar()->showMessage(status);
}

void GnuplotWidget::gnuplotOutput(const QString& output)
{
    outputFrame->appendPlainText(output);
}

int main(int argc, char* argv[])
{
    QApplication app(argc, argv);
    mainWindow = new QMainWindow;
    GnuplotWidget* widget = new GnuplotWidget();
    mainWindow->setCentralWidget(widget);
    mainWindow->statusBar()->showMessage("Qt Gnuplot widgets embedding example");
    mainWindow->show();
    widget->plot();
    app.exec();

    return 0;
}
`