【问题标题】:One QWebView -> Many QWebPage一个 QWebView -> 许多 QWebPage
【发布时间】:2012-11-19 22:13:24
【问题描述】:

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

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

【问题讨论】:

  • 我不认为 QtWebKit(以及一般的 WebKit)支持将其状态序列化/反序列化到堆栈中。如果您描述您要解决的问题,也许会有所帮助?
  • 我正在考虑让许多 QWebPage 共享一个 QWebView。目前,使用“_target=blank”打开链接将创建一个新的 QWebView IIRC。

标签: qt qt4 qtwebkit


【解决方案1】:

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

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

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

您也可以尝试在QWebPage 中子类化triggerAction,然后检查请求的操作,如果它的QWebPage::OpenLinkInNewWindow 调用基类函数并将操作改为QWebPage::OpenLink

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

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    相关资源
    最近更新 更多