关于qt:一个QWebView – >

One QWebView -> Many QWebPage

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

我是新的QT(甚至C++),关于如何修复堆栈的建议也值得赞赏。


强制打开同一个QWebView中的链接(如果它们是"链接")。

您可以将QWebPage的linkdelegationpolicy设置为QWebPage::DelegateAllLinks的linkdelegationpolicy。然后捕获QWebPagelinkClicked信号,在信号的参数中用url创建一个新的QWebPage

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

您还可以尝试在QWebPage中对triggerAction进行子类化,然后检查请求的操作,如果它的QWebPage::OpenLinkInNewWindow调用基类函数并将该操作作为QWebPage::OpenLink给出。

不确定这是否在所有情况下都有效,但值得一试,如果它对你有用的话。