One QWebView -> Many QWebPage
如何处理"在新窗口中打开链接"以打开新的QWebPage而不是新窗口,将以前的qwebpage保存在堆栈中并用QWebView::setPage()显示新的qwebpage?
我是新的QT(甚至C++),关于如何修复堆栈的建议也值得赞赏。
- 我不认为qtwebkit(和webkit一般)支持将其状态序列化/反序列化到堆栈中/从堆栈中。如果你描述一下你想解决的问题也许会有帮助?
- 我正在考虑让一个QWebView由多个Q网页共享。当前,打开一个带有"_target=blank"的链接将派生一个新的QWebView IIRC。
强制打开同一个QWebView中的链接(如果它们是"链接")。
您可以将QWebPage的linkdelegationpolicy设置为QWebPage::DelegateAllLinks的linkdelegationpolicy。然后捕获QWebPage的linkClicked信号,在信号的参数中用url创建一个新的QWebPage。
至于堆栈,您也可以手动执行。有一个QList/QVector,每当你从上面的信号中得到一个新的QWebPage时,将当前的QWebPage添加到堆栈中,然后创建新的QWebPage并将其设置为QWebView::setPage()。
您还可以尝试在QWebPage中对triggerAction进行子类化,然后检查请求的操作,如果它的QWebPage::OpenLinkInNewWindow调用基类函数并将该操作作为QWebPage::OpenLink给出。
不确定这是否在所有情况下都有效,但值得一试,如果它对你有用的话。