我们已经有了 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/