2011-01-20 56 views

回答

4

QWebView不處理自己的Cookie。取而代之的是,工作被卸載到傳入每個QWebPageQNetworkAccessManager,儘管我目前不知道QWebView是否爲每個QWebView設置了相同的QNeworkAccessManager,或者如果它使用不同的QWebViewAccessManager,後者可能看起來很糟糕。

您可以使用QWebPage::networkAccessManager()來抓取負責QWebPage的QNetworkAccessManager和QWebPage::setNetworkAccessManager來設置它。

使用QNetworkAccessManager::cookieJar()可以獲得QNetworkCookieJar的句柄,該句柄負責爲給定的QNetworkAccessManage管理Cookie。

因此,如果您創建QWebView的不同實例或直接明智地使用QNetworkAccessManager的不同實例,則可以使用不同的Cookie會話/罐子創建不同的瀏覽器視圖,並實現您所期望的結果。

+0

好的謝謝,但這是高層次,你可以請直接給我一些關於這個問題的教程 – user63898 2011-01-21 14:25:48

1

我知道這個問題已經過了一年多了,但我想我會發布一些代碼來設置多個會話。

QWebView webView = new QWebView(); 
QNetworkCookieJar cookieJar = new QNetworkCookieJar(); 
QNetworkAccessManager nam = new QNetworkAccessManager(); 
nam.setCookieJar(cookieJar); 
webView.page()->setNetworkAccessManager(nam); 

使用此代碼,您可以創建多個會話,甚至在自己的類封裝此代碼,只是實例化的類的實例,以便能夠在應用程序中有多個自包含的Web瀏覽器會話。

相關問題