2009-09-29 7 views
0

Я звоню QWebFrame::evaluateJavaScript в одном месте в моем коде и не имеет никакого эффекта. Однако, если я заменю этот вызов вызовом setTimer (0) и вызывается функция оригинала, когда этот таймер истечет, он работает. Как узнать, работает ли это или нет? Код JavaScript, который оценивается в моем случае, вызывает одну функцию JavaScript, которая, в свою очередь, вызывает вызов AJAX. Этот вызов AJAX в свою очередь составляет QNetworkAccessManager, используемый QWebFrame. Создайте и отправьте QNetworkRequest. Однако запрос не создается, когда я вызываю QWebFrame::evalutateJavaScript непосредственно из своего кода. Вот что я имею в виду, когда говорю, что это не работает в первом сценарии.Почему QWebFrame :: evalutateJavaScript ничего не делает в этом случае?

Похоже, что что-то мешает QtWebKit и // или QNetworkAccessManager выполнять свою работу после вызова evaluateJavaScript. Я подозреваю, что это имеет какое-то отношение к событиям и основному циклу событий (gui). Есть идеи?

ответ

1

Учитывая ваши комментарии об использовании setTimer(), вызов qApp-> processEvents() в правой точке может решить проблему.

Не могли бы вы предоставить код? Я не уверен, что вы имеете в виду под этим:

Этот вызов AJAX в свою очередь, делает QNetworkAccessManager используется QWebFrame создать и отправить QNetworkRequest.