首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链接点击信号QWebEngineView

链接点击信号QWebEngineView
EN

Stack Overflow用户
提问于 2016-10-21 06:55:04
回答 4查看 5.6K关注 0票数 1

我们已经有了QWebView实现,现在我们希望迁移到QWebEngineView。

通过QWebView,我们已经注册了下面的信号来接收任何链接是否被点击的通知,并且我们在QWebView中得到了信号。

connect(m_WebView, SIGNAL(linkClicked(const QUrl &)),SLOT(urlLinkClicked(const QUrl &)));

在"urlLinkClicked“插槽中,我们将打开新选项卡,并将该URL打开到新选项卡中。

我们正面临着QWebEngineView的一些问题。因为在linkClicked中没有这样的信号“QWebEngineView”。因此,我们尝试了以下选项,但仍然无法找到解决办法。

  • 在主类中,我们创建了WebEngineView类实例并设置了WebEnginePage。我们可以呈现网站在视图类,但当我们点击任何链接,然后我们没有收到任何信号,所以我们不能打开新的网站在新的标签。 m_WebEngineView = new QWebEngineView(this); m_WebEngineView->setPage(new QWebEnginePage());我们还覆盖了"acceptNavigationRequest“方法来获取mainWebEngineView中的链接单击事件,但是我们无法获得链接单击事件。

有什么建议我可以试试吗?

提前谢谢。

EN

回答 4

Stack Overflow用户

发布于 2016-12-07 11:09:13

覆盖QWebEnginePage子类中的QWebEnginePage::acceptNavigationRequest:

代码语言:javascript
复制
bool MyWebPage::acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame)
{
    if (type == QWebEnginePage::NavigationTypeLinkClicked)
    {
        qDebug() << url;
    }
    return true;
}
票数 3
EN

Stack Overflow用户

发布于 2020-02-06 10:06:24

在继承的WebEngineView中使用这个,在继承的网页中我们可以找到hoverdUrl

代码语言:javascript
复制
QWebEngineView *WebEngineView::createWindow(QWebEnginePage::WebWindowType type)
    {
        if(type==QWebEnginePage::WebBrowserTab)
        {
            if(!hoverdUrl.isEmpty())
                QDesktopServices::openUrl(QUrl(hoverdUrl));

             qGlobalDbg("Open external Url requiested in chat, url : " + hoverdUrl, toKIBANA|toLOG);
        }
        //qDebug()<<"============== link Clicked "<<hoverdUrl;
        return NULL;
    }
票数 1
EN

Stack Overflow用户

发布于 2016-10-21 08:17:34

我想你可以用"urlChanged“这个信号。

请参阅官方文档页面上的标题“信号”。http://doc.qt.io/qt-5/qwebengineview.html

如果这没有帮助,我需要知道您使用的Qt框架的哪个版本。

最诚挚的问候/拉斯谟

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40170180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档