QT:暂停功能流程直到QWebView SIGNAL完成

时间:2010-10-21 10:25:13

标签: c++ qt qt4 qtwebkit qwebview

我主要是网络开发者,所以我的问题可能是初学者的问题。

我正在编写一个与QWebView内容一起使用的函数,这是一种在加载的网页上进行操作的宏脚本。

代码是这样的:

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 <...>

}

好的,所以在我写“&lt; ...&gt;这里的地方,我想暂停代码,直到页面加载&lt; ...&gt;”我不知道如何暂停该功能并使其等待页面完成加载。我知道信号和插槽。但是如果我在这里使用插槽,我将不得不继续使用另一个函数 - 在SLOT函数中,但我希望将所有代码和逻辑保留在某个函数中()。怎么做?

1 个答案:

答案 0 :(得分:3)

您可以使用嵌套的QEventLoop来同步异步处理,例如页面加载。发出loadFinished时,只需exit()循环即可从您进入循环的位置继续执行。

另一方面,将处理拆分为多个功能(插槽)也不是那么糟糕。代码和逻辑仍然在同一个类中的相同位置。