簡體   English   中英

QWebEngineView::renderProcessTerminated 信號在 QT C++ 中不起作用

[英]QWebEngineView::renderProcessTerminated signal not working in QT C++

我正在嘗試在 qt c++ 中連接一個信號和插槽。我想要實現的是,當瀏覽器完成呈現頁面時,我希望它發出信號並在我的插槽中接收它。 我最初為urlChanged()信號編寫它並且它工作正常但是當我將它更改為renderProcessTerminated時,它不會 output 插槽 function 中的語句。

以下是聲明插槽的MyClass.h文件的片段:

private slots:
        void onRenderProcessTerminated(QWebEnginePage::RenderProcessTerminationStatus terminationStatus, int exitCode);

以下是連接信號和槽的MyClass.cpp文件構造函數的片段:

connect(ui->webEngineView, &QWebEngineView::renderProcessTerminated, this, &MyClass::onRenderProcessTerminated);

以下是來自MyClass.cpp的插槽 function onRenderProcessTerminated (cout 是我在 web 引擎視圖中創建到 output 消息的 function 並且工作正常):

void MyClass::onRenderProcessTerminated(QWebEnginePage::RenderProcessTerminationStatus terminationStatus, int exitCode) {
    cout("INSIDE RENDER PROCESS TERMINATED");
}

我想要實現的是,當瀏覽器完成呈現頁面時,我希望它發出信號

RenderProcessTerminated並不意味着“完成頁面渲染”。 這意味着用於渲染的操作系統進程已異常終止。 它發生在渲染器崩潰時。 Qt 文檔明確指出:

當渲染進程以非零退出狀態終止時,會發出此信號。 terminationStatus是進程的終止狀態, exitCode是進程終止的狀態代碼。

在英語中,您要查找的動詞是finished而不是terminated 前者暗示后者:當一個進程完成時,它就終止了。 但反過來是不必要的:一個進程很可能在完成任務之前終止,例如,如果它崩潰,或者在父進程退出時終止等。而且: RenderProcess並不意味着“渲染某些東西的任務”。 它的字面意思是“執行渲染的操作系統進程”。 只要您有任何 web 視圖處於活動狀態,該進程通常必須保持活動狀態。

我能看到的唯一接近你想要的信號是QWebEngineView::loadFinished(bool ok) 試試看。

Ohterwise,為了更好的通知,你需要注入一些 javascript 到視圖中,並與之交互。 這可能比它的價值更多的努力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM