我实际上尚未做到这一点,但我认为您 可以 使用来实现您的解决方案
QNetworkAccessManager。
您可以使用networkAccessManager
()函数从QWebPage获取QNetworkAccessManager
。QNetworkAccessManager的信号完成(QNetworkReply *Reply),该信号在QWebPage实例请求文件时触发。
该
finished信号为您提供了QNetworkReply实例,从中可以获取原始请求的副本,以便识别该请求。
因此,创建一个附加到
finished信号的插槽,使用传入的QNetworkReply方法确定哪个文件刚刚完成下载,如果这是您的Ajax请求,请执行所需的任何处理。
我唯一需要说明的是,我以前从未做过此事,因此我不确定100%会奏效。
另一种选择是使用QWebframe的方法将对象插入页面的对象模型中,并插入一些Javascript,当Ajax请求完成时,Javascript将通知您的对象。这是一种稍微有点骇人听闻的方法,但是绝对可以。
编辑:
第二种选择对我来说似乎更好。工作流程如下:
在QWebframe :: javascriptWindowObjectCleared()信号上附加一个插槽。此时,调用QWebframe ::
evaluateJavascript()以添加类似于以下内容的代码:window.onload = function(){//页面已完全加载}
将所需的任何代码放入该函数中。您可能想通过QWebframe ::
addToJavascriptWindowObject()将QObject添加到页面,然后在该对象上调用一个函数。仅在页面完全加载时才执行此代码。
希望这能回答问题!



