软件中使用QNetworkAccessManager登录后,打开网页,想自动登录,用QWebView时,可以这样做:
QUrl url;
QWebView *webView = new QWebView();
QNetworkAccessManager *networkManager = new QNetworkAccessManager();
QNetworkCookieJar *cookieJar = networkManager->cookieJar();;
webView->page()->networkAccessManager()->setCookieJar(cookieJar);
webView->load(url);
webView->show();
换用QWebEngineView后,原来的接口没有了,经过研究试验,还是可以共享的,核心代码:
QUrl url;
QWebEngineView *webView = new QWebEngineView();
QNetworkAccessManager *networkManager = new QNetworkAccessManager();
QNetworkCookieJar *cookieJar = networkManager->cookieJar();;
QList<QNetworkCookie> cookies = cookieJar->cookiesForUrl(strUrl);
QWebEngineCookieStore *cookieStore = webView->page()->profile()->cookieStore();
cookieStore->setCookie(cookies.front(), url);
webView->page()->load(url);
webView->show();
有待研究:QNetworkCookieJar的cookiesForUrl返回的看起来会是多个QNetworkCookie,而QWebEngineCookieStore的setCookie只接收一个,如有多个该怎么处理?