在 QTabWidget 中嵌入一个 QWebEngineView 进程

Embed a QWebEngineView process inside QTabWidget

我正在尝试将作为单独进程 (QProcess) 运行的 QWebEngineView 小部件集成到 QTabWidget 页面中。到目前为止,QWebEngineView 进程正在正确启动,但它在单独的 window 中显示网页,而不是在 MainWindow 应用程序的 QTabWidget 中显示它。

这是添加到 QTabWidget 的小部件。

BrokersTerminal.h



class BrokersTerminal : public QWidget
{
    Q_OBJECT

  public:
    explicit BrokersTerminal(QWidget *parent = 0);
    ~BrokersTerminal();

    void startTerminal();

  public slots:
    void brokersTerminalStarted();

  private:
    Ui::BrokersTerminal *ui;
    QProcess *brokers_process;
    QString brokers_program_path;
    QStringList arguments;
};


BrokersTerminal.cpp

BrokersTerminal::BrokersTerminal(QWidget *parent) :
  QWidget(parent),
  ui(new Ui::BrokersTerminal)
{
  ui->setupUi(this);
  brokers_process = new QProcess( this );
  brokers_program_path = QApplication::applicationFilePath();

  arguments << "--b";

  connect( brokers_process, &QProcess::started, this , &BrokersTerminal::brokersTerminalStarted );
}

BrokersTerminal::~BrokersTerminal()
{
  delete ui;
}

void BrokersTerminal::startTerminal()
{
  brokers_process->start( brokers_program_path, arguments );
  brokers_process->waitForStarted();
}

void BrokersTerminal::brokersTerminalStarted()
{
  qDebug() << "Brokers terminal started";
}

这是负责显示经纪商网站的WebView Widget。

BrokersWebWidget.h

class BrokersWebWidget : public QWidget
{
    Q_OBJECT

  public:
    explicit BrokersWebWidget(QWidget *parent = 0);
    ~BrokersWebWidget();

  private:
    Ui::BrokersWebWidget *ui;
    QUrl brokers_url;
    QWebEngineView *web_browser;
};

BrokersWebWidget.cpp

BrokersWebWidget::BrokersWebWidget(QWidget *parent) :
  QWidget(parent),
  ui(new Ui::BrokersWebWidget)
{
  ui->setupUi(this);

  brokers_url = "https://siteofbrokersapi.com/";

  web_browser = new QWebEngineView( this );
  web_browser->load( brokers_url );
}

BrokersWebWidget::~BrokersWebWidget()
{
  delete ui;
}

现在这个 BrokersWebWidget 作为一个单独的进程正常启动,但它在一个单独的 window 中打开,但是如何将其添加到 BrokersTerminal 小部件中?

请让我知道任何可能的解决方案。谢谢

您不能将一个进程中的小部件 运行ning 嵌入到另一个进程中的 window 运行 中。 QWidgets 只能在同一进程的 GUI 线程中与小部件 运行 一起工作。