2012-09-08 134 views
0

如何配置QWebView以降低网络超时值 - 以便在出现网络故障时,可以很快达到loadFinished(bool ok)信号,显然,通过false值和适当的错误条件组?Qt QWebView网络超时值和信号

处理不同的超时加分不同

回答

4

标准错误和成功的页面加载将触发作为前loadFinished以同样的方式,而是一种自定义计时器将停止网页加载和触发与确定loadFinished =假

class Browser(object): 

    def __init__(self): 
     self.web_view = QWebView() 
     self.web_view.loadFinished.connect(self._load_finished) 

     self._error = None 

    def perform(self, url, timeout_value=30): 
     request = QNetworkRequest() 
     request.setUrl(QUrl(url)) 

     self.timeout_timer = QTimer() 
     self.timeout_timer.timeout.connect(self._request_timed_out) 

     self.timeout_timer.start(timeout_value * 1000) 
     self.web_view.load(request) 

    def _request_timed_out(self): 
     self._error = 'Custom request timeout value exceeded.' 
     self.timeout_timer.stop() 
     self.web_view.stop() 
     self.loadFinished.emit(False) 

    def _load_finished(self, ok): 
     pass 
     # ok is now False, and self._error contains a custom error message 
+0

这是一个有效的解决方法 - 通过继承QWebView可能会更加封装......但仍然不能相信他们在网络套接字上的所有select()调用上对超时进行了硬编码,现在呢? – qdot

+0

我得出了同样的结论,因为我没有在API文档中找到有关超时值的任何帮助...... – andrean