QWebEngineView::renderProcessTerminated 信号在 QT C++ 中不起作用
QWebEngineView::renderProcessTerminated signal not working in QT C++
我正在尝试在 qt c++ 中连接信号和槽。我想要实现的是,当浏览器完成呈现页面时,我希望它发出信号并在我的插槽中接收它。我最初为 urlChanged()
信号编写它并且它工作正常但是当我将它更改为 renderProcessTerminated
时,它不会输出槽函数中的语句。
以下是声明插槽的 MyClass.h 文件的片段:
private slots:
void onRenderProcessTerminated(QWebEnginePage::RenderProcessTerminationStatus terminationStatus, int exitCode);
以下是 MyClass.cpp 文件的构造函数片段,其中连接了信号和插槽:
connect(ui->webEngineView, &QWebEngineView::renderProcessTerminated, this, &MyClass::onRenderProcessTerminated);
下面是槽函数onRenderProcessTerminated
来自MyClass.cpp(cout是我创建的函数,用于在web引擎视图中输出消息并且工作正常):
void MyClass::onRenderProcessTerminated(QWebEnginePage::RenderProcessTerminationStatus terminationStatus, int exitCode) {
cout("INSIDE RENDER PROCESS TERMINATED");
}
What I want to achieve is that when the browser finishes rendering the page I want it to emit the signal
RenderProcessTerminated
并不意味着“完成页面渲染”。这意味着用于渲染的操作系统进程已异常终止。它发生在例如当渲染器崩溃时。 Qt文档明确指出:
This signal is emitted when the render process is terminated with a non-zero exit status. terminationStatus
is the termination status of the process and exitCode
is the status code with which the process terminated.
在英语中,您要查找的动词是 finished 而不是 terminated。前者暗示后者:当一个进程完成时,它就终止了。但反过来是不必要的:一个进程很可能在完成任务之前终止,例如如果它崩溃,或者在父进程退出时终止,等等。而且: RenderProcess
并不意味着“渲染某物的任务”。它的字面意思是“执行渲染的操作系统进程”。只要您有任何网络视图处于活动状态,该进程通常必须保持活动状态。
我能看到的唯一接近您想要的信号是 QWebEngineView::loadFinished(bool ok)
。试试吧。
否则,为了获得更好的通知,您需要向视图中注入一些 javascript 并与之交互。付出的努力可能不值得。
我正在尝试在 qt c++ 中连接信号和槽。我想要实现的是,当浏览器完成呈现页面时,我希望它发出信号并在我的插槽中接收它。我最初为 urlChanged()
信号编写它并且它工作正常但是当我将它更改为 renderProcessTerminated
时,它不会输出槽函数中的语句。
以下是声明插槽的 MyClass.h 文件的片段:
private slots:
void onRenderProcessTerminated(QWebEnginePage::RenderProcessTerminationStatus terminationStatus, int exitCode);
以下是 MyClass.cpp 文件的构造函数片段,其中连接了信号和插槽:
connect(ui->webEngineView, &QWebEngineView::renderProcessTerminated, this, &MyClass::onRenderProcessTerminated);
下面是槽函数onRenderProcessTerminated
来自MyClass.cpp(cout是我创建的函数,用于在web引擎视图中输出消息并且工作正常):
void MyClass::onRenderProcessTerminated(QWebEnginePage::RenderProcessTerminationStatus terminationStatus, int exitCode) {
cout("INSIDE RENDER PROCESS TERMINATED");
}
What I want to achieve is that when the browser finishes rendering the page I want it to emit the signal
RenderProcessTerminated
并不意味着“完成页面渲染”。这意味着用于渲染的操作系统进程已异常终止。它发生在例如当渲染器崩溃时。 Qt文档明确指出:
This signal is emitted when the render process is terminated with a non-zero exit status.
terminationStatus
is the termination status of the process andexitCode
is the status code with which the process terminated.
在英语中,您要查找的动词是 finished 而不是 terminated。前者暗示后者:当一个进程完成时,它就终止了。但反过来是不必要的:一个进程很可能在完成任务之前终止,例如如果它崩溃,或者在父进程退出时终止,等等。而且: RenderProcess
并不意味着“渲染某物的任务”。它的字面意思是“执行渲染的操作系统进程”。只要您有任何网络视图处于活动状态,该进程通常必须保持活动状态。
我能看到的唯一接近您想要的信号是 QWebEngineView::loadFinished(bool ok)
。试试吧。
否则,为了获得更好的通知,您需要向视图中注入一些 javascript 并与之交互。付出的努力可能不值得。