我正在嘗試在 qt c 中連接信號和插槽。我想要實作的是,當瀏覽器完成渲染頁面時,我希望它發出信號并在我的插槽中接收它。我最初為urlChanged()signal 撰寫了它,它作業正常,但是當我將它更改為 時renderProcessTerminated,它不會輸出 slot 函式中的陳述句。
以下是宣告插槽的MyClass.h檔案的片段:
private slots:
void onRenderProcessTerminated(QWebEnginePage::RenderProcessTerminationStatus terminationStatus, int exitCode);
以下是連接信號和槽的MyClass.cpp檔案的建構式的片段:
connect(ui->webEngineView, &QWebEngineView::renderProcessTerminated, this, &MyClass::onRenderProcessTerminated);
以下是 MyClass.cpp 中的 slot 函式onRenderProcessTerminated(cout是我創建的用于在 Web 引擎視圖中輸出訊息的函式,并且作業正常):
void MyClass::onRenderProcessTerminated(QWebEnginePage::RenderProcessTerminationStatus terminationStatus, int exitCode) {
cout("INSIDE RENDER PROCESS TERMINATED");
}
uj5u.com熱心網友回復:
我想要實作的是,當瀏覽器完成渲染頁面時,我希望它發出信號
RenderProcessTerminated并不意味著“完成渲染頁面”。這意味著用于渲染的作業系統行程已例外終止。它發生在例如渲染器崩潰時。Qt 檔案明確指出:
當渲染行程以非零退出狀態終止時,會發出此信號。
terminationStatus是行程的終止狀態,是exitCode行程終止的狀態碼。
在英語中,您要查找的動詞是finished而不是terminate。前者意味著后者:當一個行程完成時,它已經終止。但反過來是不必要的:一個行程很可能在完成其任務之前終止,例如,如果它崩潰,或者在父行程退出時終止,等等。而且:這RenderProcess并不意味著“渲染某物的任務” . 它的字面意思是“執行渲染的作業系統行程”。只要您有任何網路視圖處于活動狀態,該程序通常必須保持有效。
我能看到的唯一與您想要的信號相近的信號是QWebEngineView::loadFinished(bool ok). 試試看。
Ohterwise,對于更精細的通知,您需要將一些 javascript 注入到視圖中,并與之互動。這可能比它的價值更多的努力。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/450248.html
標籤:C qt qt-创作者 信号槽 qwebengineview
上一篇:過濾案例類中的結構欄位陣列
下一篇:Qt自定義繪制事件進度條
