2016-05-09 4 views
0

QTabWidgetページ内で別のプロセス(QProcess)として実行されるQWebEngineViewウィジェットを統合しようとしています。これまでのところ、QWebEngineViewプロセスは正しく起動されていますが、MainWindowアプリケーションのQTabWidget内に表示するのではなく、別のウィンドウでWebページを表示しています。QWebEngineViewプロセスを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ウィジェットです。

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ウィジェットに追加することができますか?

解決方法を教えてください。ありがとう。

答えて

1

あるプロセスで実行されているウィジェットを別のプロセスで実行されているウィンドウに埋め込むことはできません。 QWidgetは、同じプロセスでGUIスレッドで実行されるウィジェットでしか動作できません。

+0

はい、私はウィジェットが同じGUIプロセスに組み込まれている必要があるというあなたの要点を理解しています。だから私はすべてのGUI関連のものが同じMainWindowプロセスで実行されるように設計計画を変更しましたが、重い計算はバックグラウンドプロセスに委任されました。アドバイスありがとうございます。 – Maxx

関連する問題