一个QWebView - >很多QWebPage

时间:2010-10-11 11:59:37

标签: qt qt4 qtwebkit

如何处理“在新窗口中打开链接”以打开新的QWebPage而不是新窗口,将先前的QWebPage保存在堆栈中并使用QWebView::setPage()显示新的? / p>

我是Qt(甚至是C ++)的新手,关于如何修复堆栈的建议也很受欢迎。

1 个答案:

答案 0 :(得分:5)

强制打开同一QWebView中的链接,如果它们是“链接”

您可以为QWebPage设置linkDelegationPolicyQWebPage::DelegateAllLinks 然后捕获linkClicked的{​​{1}}信号,并在信号参数中创建一个QWebPage的新QWebPage

至于堆栈,您也可以手动执行此操作。有一个url / QList,当您从上述信号中获得新的QVector时,请将当前QWebPage添加到堆栈,然后创建新的QWebPage并将其设置为QWebPage

您还可以尝试在QWebView::setPage()中对triggerAction进行子类化,然后检查所请求的操作,以及QWebPage是否调用基类函数并将操作改为QWebPage::OpenLinkInNewWindow

不确定这是否适用于所有情况,但值得一试,如果它适合你。