在 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 运行 中。 QWidget
s 只能在同一进程的 GUI 线程中与小部件 运行 一起工作。
我正在尝试将作为单独进程 (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 运行 中。 QWidget
s 只能在同一进程的 GUI 线程中与小部件 运行 一起工作。