c++ - 链接点击信号QWebEngineView

标签 c++ qt webkit qtwebengine

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

通过 QWebView,我们已经在下面注册了信号,以接收有关是否在 webview 上单击了任何链接的通知,我们正在 QWebView 中获取信号。

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

在“urlLinkClicked”插槽中,我们正在打开新标签页并将该 URL 打开到新标签页中。

我们在使用 QWebEngineView 时遇到了一些问题。由于 QWebEngineView 中不存在这样的信号“linkClicked”。所以我们尝试了以下选项,但仍然无法找到解决方案。

  • 在主类中,我们创建了 WebEngineView 类实例并设置了 WebEnginePage。我们能够在 View 类中呈现该网站,但是当我们单击任何链接时,我们没有收到任何信号,因此我们无法在新选项卡中打开该新网站。

    m_WebEngineView = new QWebEngineView(this); m_WebEngineView->setPage(new QWebEnginePage()); 我们还覆盖了“acceptNavigationRequest”方法以获取 mainWebEngineView 中的链接点击事件,但我们无法获取链接点击事件。

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

提前致谢。

最佳答案

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

bool MyWebPage::acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame)
{
    if (type == QWebEnginePage::NavigationTypeLinkClicked)
    {
        qDebug() << url;
    }
    return true;
}

关于c++ - 链接点击信号QWebEngineView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40170180/

相关文章:

c++ - C++ 中 move 语义的起源是什么?

javascript - 是否可以在 WebKit 中覆盖 document.cookie?

iphone - 适用于 Safari、Iphone 的 Webkit API

qt - Qt setHorizo​​ntalHeaderLabel for qtableWidget

c++ - 无法识别的命令行选项 '-WI'

c++ - 全局声明 QStringlist 变量,使用 QFileDialog 获取位置路径并将其打印到 lineEdit 并在 QProcess 中使用它

jquery - CSS3 中的滑动动画

c++ - 内存映射文件如何与写入文件的另一个进程同步?

c++ - Qt 错误 : QHBoxLayout was not declaredin this scope?

c++ - 从 C++ 中的指针访问数组元素