4

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

我是 Qt(甚至是 C++)的新手,也很感谢有关如何修复堆栈的建议。

4

1 回答 1

5

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

您可以为to设置linkDelegationPolicy ,然后在信号的参数中捕获信号并创建一个新的QWebPageQWebPage::DelegateAllLinkslinkClickedQWebPageQWebPageurl

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

您也可以尝试将 triggerAction子类化QWebPage,然后检查请求的操作,以及它是否QWebPage::OpenLinkInNewWindow调用基类函数并QWebPage::OpenLink改为提供操作。

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

于 2012-11-19T14:13:24.457 回答