2011-05-20 36 views
4

這是我如何更改代理:如何管理代理與QT QWebView

QNetworkProxy proxy; 
proxy.setType(QNetworkProxy::HttpProxy); 
proxy.setHostName("ip"); 
proxy.setPort(8008); 

QNetworkProxy::setApplicationProxy(proxy); 

它可以正常工作,如果我這樣做之前,我創造的WebView。但是如果我在QWebView的生命週期中更改代理,它不會加載任何網站。在QT中改變代理的正確方法是什麼?

謝謝。

+0

QNetworkProxy文檔中的一個提示說:「注意:對當前連接的套接字進行的更改不會生效,如果需要更改連接的套接字,則應重新連接。 。你也試過webview-> page() - > networkAccessManager() - > setProxy(proxy); – Abhijith 2011-05-20 14:14:55

回答

5

QWebPage::setNetworkAccessManager方法的文件說,

注:當前不支持更改網絡訪問管理器的QWebPage已經使用了上去。這樣做的結果是未定義的。

所以我的猜測是,一旦你設置了一個應用程序範圍的代理,並且一旦構建了QWebPage,它就會得到一個QNetworkAccessManager,並且你不能改變它的代理設置。

作爲使用應用程序範圍代理的替代方法,您可能可以創建一個新的QNetworkAccessManager並使用其QNetworkAccessManager :: setProxy()方法來設置代理。然後將此QNetworkAccessManager實例傳遞給您的網頁。

無論如何,你需要玩它。我希望這有幫助。