Один QWebView -> Много QWebPage

Как можно обработать «Открыть ссылку в новом окне», чтобы открыть новое QWebPage вместо нового окна, сохранить предыдущую QWebPage в стеке и показать новую с QWebView::setPage()?

Я новичок в Qt (и даже в C++), также приветствуется рекомендация по исправлению стека.


person speakman    schedule 11.10.2010    source источник
comment
Я не думаю, что QtWebKit (и WebKit в целом) поддерживает сериализацию/десериализацию своего состояния в/из стека. Может быть, было бы полезно, если бы вы описали, какие проблемы вы пытаетесь решить?   -  person Ariya Hidayat    schedule 27.03.2011
comment
Я думал о том, чтобы один QWebView использовался многими QWebPage. В настоящее время открытие ссылки с _target=blank приведет к созданию нового QWebView IIRC.   -  person speakman    schedule 16.08.2011


Ответы (1)


принудительно открывать ссылки в одном и том же QWebView, если это "ссылки"

вы можете установить linkDelegationPolicy для QWebPage на QWebPage::DelegateAllLinks, а затем поймать linkClicked сигнал QWebPage и создайте новый QWebPage с url в аргументе сигнала

Что касается стека, вы также можете сделать это вручную. Имейте QList / QVector и всякий раз, когда вы получаете новый QWebPage из вышеуказанного сигнала, добавляйте текущий QWebPage в стек, а затем создавайте новый QWebPage и устанавливайте его как QWebView::setPage()

вы также можете попробовать создать подкласс triggerAction в QWebPage, а затем проверить запрошенное действие и его QWebPage::OpenLinkInNewWindow вызовите функцию базового класса и задайте действие как QWebPage::OpenLink вместо этого.

Не уверен, что это сработает во всех случаях, но стоит попробовать, если это сработает для вас.

person Viv    schedule 19.11.2012