QT: приостановить выполнение функции до завершения QWebView SIGNAL - PullRequest
1 голос
/ 21 октября 2010

Я в основном веб-разработчик, поэтому мой вопрос может быть своего рода новичком.

Я пишу функцию, которая работает с контентом QWebView, своего рода макрос-скрипт, который выполняет действия в загруженном вебpage.

код выглядит примерно так:

somefunction() {

QWebView *webView;
webView->load(QUrl("http://www.google.com"));
<...> here I want to pause the code until the page is loaded <...>
here goes the code of html manipulation, click on another link
<...> here I want to pause the code until the page is loaded <...>

}

Хорошо, поэтому в местах, где я написал "<...> здесь, я хочу приостановить код до загрузки страницы <...> "Я не знаю, что делать, чтобы приостановить функцию и заставить ее ждать загрузки страницы.Я знаю о сигналах и слотах.Но если я здесь использую слот, мне придется продолжить в другой функции - в функции SLOT, но я хочу оставить весь код и логику в somefunction ().Как это сделать?

1 Ответ

3 голосов
/ 21 октября 2010

Вы можете использовать вложенный QEventLoop для синхронизации асинхронной обработки, такой как загрузка страницы. Когда выдается loadFinished, просто exit() цикл, чтобы возобновить выполнение с того места, где вы вошли в цикл.

С другой стороны, разделение обработки на несколько функций (слотов) также не так уж плохо. Код и логика находятся в том же месте в том же классе.

...