【问题标题】:Embed a QWebEngineView process inside QTabWidget在 QTabWidget 中嵌入 QWebEngineView 进程
【发布时间】:2016-05-09 16:45:13
【问题描述】:

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

这是被添加到 QTabWidget 的 Widget。

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 小部件。

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 作为一个单独的进程正常启动,但它在一个单独的窗口中打开,但是如何将它添加到 BrokersTerminal 小部件中?

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

【问题讨论】:

    标签: c++ qt qtwebengine


    【解决方案1】:

    您不能将在一个进程中运行的小部件嵌入到在另一个进程中运行的窗口中。 QWidgets 只能与在同一进程中的 GUI 线程中运行的小部件一起使用。

    【讨论】:

    • 嗯,是的,我理解你的观点,小部件需要在同一个 GUI 进程中才能集成到其中。所以我改变了我的设计计划,以确保所有与 GUI 相关的东西都在同一个 MainWindow 进程中完成,而繁重的计算则委托给后台进程。感谢您的建议。
    猜你喜欢
    • 2021-05-30
    • 2020-09-25
    • 1970-01-01
    • 2011-04-13
    • 2011-10-23
    • 2023-03-24
    • 2018-04-12
    • 2018-12-07
    • 2021-10-07
    相关资源
    最近更新 更多