Доброе время суток!
Пишу специализированный браузер для сайта, чтобы было что-то типа дестктопной версии.
С linkClicked(QUrl url) всё понятно. Переопределил метод, и вызываю при особых условиях load(url).
А вот, что делать с urlChanged(QUrl url)? Как переопределить метод (и какой метод) для запрета загрузки некоторых url?
Поискал, ничего не нашёл, где обошлось бы без особого шаманства с QNetwork...
Решение:
Завязываем changed на слот, в котором пишем аля
if (!siteName.contains("prog.org.ru"))
{
stop();
back();
}
UPD: пока что временно нашёл, как обойти эту проблему. Но возникла новая...
Задача: есть два qwebview, на одном я захожу на сайт, авторизуюсь, работаю. Но определённые ссылки нужно открыть на втором qwebview. А так как параметры сессии отсутствуют у него, то не получается нужного результата. Как передать параметры сессии, не нашёл, есть идея - передовать post запросом параметры сессии, но это как то неправильно, и пока я не знаю, насколько это возможно сделать. Еще ковырялся с qwebpage, но смог только перенести состояние с первого qwebview на второй, с блокировкой первого.
Решение:
Как-то так.
C++ (Qt)
QNetworkCookieJar *cookieJar = new QNetworkCookieJar();
webView1->page->networkAccessManager()->setCookieJar(cookieJar);
cookieJar->setParent(0);
webView2->page->networkAccessManager()->setCookieJar(cookieJar);
cookieJar->setParent(0);
2SimpleSunny Спасибо!
написал
webView_2->page()->networkAccessManager()->setCookieJar(webView->page()->networkAccessManager()->cookieJar());
webView_2->load(url);
и всё ништяк стало.
UPD:
Всем привет!
Возвращаюсь ко своим баранам.
Этот способ:
Завязываем changed на слот, в котором пишем аля
if (!siteName.contains("prog.org.ru"))
{
stop();
back();
}
не работает так, как нужно. Нужно чтобы, первый webView не проходил по ссылке.
Я сделал две QWebPage. Работая с первой webPage, я перехватываю в urlChanged и linkClicked нужную ссылку и делаю setPage() от неё во второй webView.
Но я не знаю, как отлавливать input'ы от второго webView (mouseEvents хотя бы) и применять непосредственно к этой webPage.
Решение:
в хедере:
static QWebPage *page1;
static QWebPage *page2;
в событиях urlChanged и linkClicked при нужной ссылке:
page2->networkAccessManager()->setCookieJar(page1->networkAccessManager()->cookieJar());
webView->setPage(page2);
webView->load(QUrl("http://..."));
webView_2->setPage(page1);