Могу ли я открыть более одного экземпляра QWebView, который будет имитировать открытие N браузеров?
Могу ли я заставить Qwebkit открывать (во вкладках) более одного QwebView или что-то еще. что каждый из них будет хранить свои собственные куки и откроет свой собственный сеанс. Я хотел бы иметь возможность, в конце концов, открывать несколько писем и просматривать их в одном браузере.
2 ответа
QWebView не обрабатывает куки самостоятельно. Вместо этого эта работа выгружается в QNetworkAccessManager, афферентно для каждого QWebPage, хотя в настоящее время я не знаю, устанавливает ли QWebView один и тот же QNeworkAccessManager для каждого QWebView или использует разные, последний может показаться плохим подходом.
Вы можете использовать QWebPage::networkAccessManager (), чтобы получить QNetworkAccessManager, ответственный за QWebPage, и QWebPage::setNetworkAccessManager, чтобы установить его.
Используйте QNetworkAccessManager::cookieJar (), чтобы получить дескриптор QNetworkCookieJar, который заботится о куки для данного QNetworkAccessManage.
Таким образом, если вы создаете разные экземпляры QWebView или используете разные экземпляры QNetworkAccessManager напрямую и разумно, вы можете создавать разные представления браузера с разными сеансами / банками файлов cookie и достигать желаемого результата.
Я знаю, что этому вопросу больше года, но я решил опубликовать код для настройки нескольких сессий.
QWebView webView = new QWebView();
QNetworkCookieJar cookieJar = new QNetworkCookieJar();
QNetworkAccessManager nam = new QNetworkAccessManager();
nam.setCookieJar(cookieJar);
webView.page()->setNetworkAccessManager(nam);
Используя этот код, вы можете создать несколько сеансов и даже заключить этот код в свой собственный класс и просто создать экземпляр класса, чтобы иметь возможность иметь несколько автономных сеансов веб-браузера в вашем приложении.