0
我正在尝试集成一个QWebEngineView小部件,它作为一个单独的进程(QProcess)在QTabWidget页面内运行。到目前为止,QWebEngineView进程正在正确启动,但它将网页显示在单独的窗口中,而不是显示在MainWindow应用程序的QTabWidget中。在QTabWidget中嵌入一个QWebEngineView进程
这是要添加到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小部件。
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的Widget添加?
请让我知道任何可能的解决方案。谢谢。
嗯,是的,我明白你的观点,小工具需要在相同的GUI过程中才能够被集成到它。所以我改变了我的设计计划,以确保所有与GUI相关的东西都在同一个MainWindow进程中完成,而大量的计算则委托给后台进程。谢谢你的建议。 – Maxx