2010-10-21 44 views
1

我是一个主要的web开发者,所以我的问题可能是一些初学者。QT:暂停功能流程,直到QWebView SIGNAL完成

我正在写一个函数,它与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 <...> 

} 

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

回答

3

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

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

+0

laalto,感谢这个伟大的提示!它将流程从僵局中移走! – Timus83 2010-10-23 14:50:42

+0

将处理分割为多个功能是非常好的主意。我喜欢这种设计。我将在我目前的应用程序中使用 – Jack 2015-09-08 20:58:09