На самом деле я этого не делал, но я думаю, что вы , возможно, сможете найти решение, используя QNetworkAccessManager
.
Вы можете получить QNetworkAccessManager из QWebPage, используя функцию networkAccessManager () . QNetworkAccessManager имеет сигнал закончен (QNetworkReply * ответ) , который запускается всякий раз, когда файл запрашивается экземпляром QWebPage.
Сигнал finished
дает вам экземпляр QNetworkReply, из которого вы можете получить копию сделанного исходного запроса для его идентификации.
Итак, создайте слот для подключения к сигналу finished
, используйте переданные методы QNetworkReply, чтобы выяснить, какой файл только что завершил загрузку, и, если это ваш Ajax-запрос, выполните любую необходимую вам обработку.
Мое единственное предупреждение: я никогда не делал этого раньше, поэтому я не уверен на 100%, что это сработает.
Другой альтернативой может быть использование методов QWebFrame для вставки объектов в объектную модель страницы, а также вставка некоторого JavaScript, который затем уведомляет ваш объект о завершении запроса Ajax. Это немного хакерский способ сделать это, но он обязательно должен сработать.
EDIT:
Второй вариант мне кажется лучше. Рабочий процесс выглядит следующим образом:
Присоедините слот к сигналу QWebFrame :: javascriptWindowObjectCleared (). На этом этапе вызовите QWebFrame ::valuJavascript (), чтобы добавить код, подобный следующему:
window.onload = function () {// страница полностью загружена}
Поместите любой код, который вам нужен, в эту функцию. Возможно, вы захотите добавить QObject на страницу через QWebFrame :: addToJavaScriptWindowObject (), а затем вызвать функцию для этого объекта. Этот код будет выполняться только после полной загрузки страницы.
Надеюсь, это ответит на вопрос!