我主要是网络开发者,所以我的问题可能是初学者的问题。
我正在编写一个与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函数中,但我希望将所有代码和逻辑保留在某个函数中()。怎么做?
答案 0 :(得分:3)
您可以使用嵌套的QEventLoop
来同步异步处理,例如页面加载。发出loadFinished
时,只需exit()
循环即可从您进入循环的位置继续执行。
另一方面,将处理拆分为多个功能(插槽)也不是那么糟糕。代码和逻辑仍然在同一个类中的相同位置。