2016-05-09 17 views
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添加?

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

回答

1

您不能将在一个进程中运行的小部件嵌入到另一个进程中运行的窗口中。 QWidget s只能在同一进程中的GUI线程中运行的小部件工作。

+0

嗯,是的,我明白你的观点,小工具需要在相同的GUI过程中才能够被集成到它。所以我改变了我的设计计划,以确保所有与GUI相关的东西都在同一个MainWindow进程中完成,而大量的计算则委托给后台进程。谢谢你的建议。 – Maxx

相关问题