2011-01-20 79 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浏览器会话。

相关问题