Могу ли я открыть более одного экземпляра QWebView, который будет имитировать открытие N браузеров? - PullRequest
1 голос
/ 21 января 2011

Могу ли я заставить Qwebkit открывать (во вкладках) более одного QwebView или что-то еще? что каждый из них будет хранить свои собственные куки и откроет свой собственный сеанс. Я хотел бы иметь возможность открывать несколько писем и просматривать их в одном браузере

Ответы [ 2 ]

4 голосов
/ 21 января 2011

QWebView не обрабатывает файлы cookie самостоятельно. Вместо этого эта работа выгружается в QNetworkAccessManager , привязанный к каждому QWebPage , хотя в настоящее время я не знаю, устанавливает ли QWebView один и тот же QNeworkAccessManager для каждого QWebView или использует разные, последний может показаться плохим подходом.

Вы можете использовать QWebPage :: networkAccessManager () , чтобы получить QNetworkAccessManager, ответственный за QWebPage, и QWebPage :: setNetworkAccessManager , чтобы установить его.

Используйте QNetworkAccessManager :: cookieJar () , чтобы получить дескриптор QNetworkCookieJar , который заботится о файлах cookie для данного QNetworkAccessManage.

Таким образом, если вы создаете разные экземпляры QWebView или используете разные экземпляры QNetworkAccessManager напрямую и разумно, вы можете создавать разные представления браузера с разными сеансами / банками файлов cookie и достигать желаемого результата.

1 голос
/ 02 февраля 2012

Я знаю, что этому вопросу больше года, но я решил опубликовать некоторый код для настройки нескольких сессий.

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

Используя этот код, вы можете создать несколько сеансов и даже заключить этот код в свой собственный класс и просто создать экземпляр класса, чтобы иметь возможность иметь несколько автономных сеансов веб-браузера в приложении.

...