我可以打开一个模仿打开N个浏览器的QWebView实例吗?

时间:2011-01-20 21:47:59

标签: c++ qt qwebkit

我可以让Qwebkit打开(在选项卡中)多个QwebView或其他东西。 每个人都将拥有自己的cookie,并将开放自己的会话。 我希望能够在一个浏览器中打开多个电子邮件并查看它们

2 个答案:

答案 0 :(得分:4)

QWebView不会自行处理Cookie。相反,工作被卸载到每个QNetworkAccessManagerQWebPage传入,虽然我目前不知道QWebView是否为每个QWebView设置了相同的QNeworkAccessManager,或者如果它使用不同的QWebView,后者可能看起来很糟糕接近艰难。

您可以使用QWebPage::networkAccessManager ()来获取负责QWebPage的QNetworkAccessManager和QWebPage::setNetworkAccessManager来设置它。

使用QNetworkAccessManager::cookieJar ()获取处理给定QNetworkAccessManage的Cookie的QNetworkCookieJar句柄。

因此,如果您创建不同的QWebView实例或直接明智地使用QNetworkAccessManager的不同实例,您可以使用不同的cookie会话/ jar创建不同的浏览器视图,并实现您想要的结果。

答案 1 :(得分:1)

我知道这个问题已经超过一年了,但我想我会发布一些代码来设置多个会话。

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

使用此代码,您可以创建多个会话,甚至将此代码包含在自己的类中,只需实例化该类的实例,即可在您的应用程序中拥有多个自包含的Web浏览器会话。