我可以让 Qwebkit 打开(在选项卡中)多于一个 QwebView 或其他东西。每个人都将拥有自己的 cookie 并打开自己的会话。我希望最终能够打开多封电子邮件并在一个浏览器中查看它们
2 回答
QWebView不自己处理 cookie。相反,工作被卸载到每个QWebPage传入的QNetworkAccessManager,尽管我目前不知道 QWebView 是否为每个 QWebView 设置相同的 QNeworkAccessManager 或者它是否使用不同的 QWebView ,后者可能看起来是一种不好的方法。
您可以使用QWebPage::networkAccessManager ()来获取负责一个 QWebPage 的 QNetworkAccessManager 和QWebPage::setNetworkAccessManager来设置它。
使用QNetworkAccessManager::cookieJar ()来获取QNetworkCookieJar的句柄,该句柄负责处理给定 QNetworkAccessManage 的 cookie。
因此,如果您创建不同的 QWebView 实例或直接明智地使用不同的 QNetworkAccessManager 实例,您可以使用不同的 cookie 会话/jar 创建不同的浏览器视图并实现您想要的结果。
我知道这个问题已经有一年多了,但我想我会发布一些代码来设置多个会话。
QWebView webView = new QWebView();
QNetworkCookieJar cookieJar = new QNetworkCookieJar();
QNetworkAccessManager nam = new QNetworkAccessManager();
nam.setCookieJar(cookieJar);
webView.page()->setNetworkAccessManager(nam);
使用此代码,您可以创建多个会话,甚至可以将此代码包含在其自己的类中,并且只需实例化该类的一个实例,以便能够在您的应用程序中拥有多个自包含的 Web 浏览器会话。