我正在将我的项目从Qt WebKit移植到Qt5.6中的Qt WebEngine。当在linkClicked(QUrl)上单击href时,我想发出QWebView信号,但是QWebEngineView没有信号linkClicked(QUrl)。
如何模仿linkClickedSignal(QUrl)?
从Qt WebKit移植到Qt WebEngine。
发布于 2016-04-06 10:03:44
我不确定它会对你有用,但在我的应用程序使用QWebEngineView,我有可点击的链接,必须打开相应的网站在浏览器。
我的做法是这样的:
class MyQWebEnginePage : public QWebEnginePage
{
Q_OBJECT
public:
MyQWebEnginePage(QObject* parent = 0) : QWebEnginePage(parent){}
bool acceptNavigationRequest(const QUrl & url, QWebEnginePage::NavigationType type, bool)
{
if (type == QWebEnginePage::NavigationTypeLinkClicked)
{
QDesktopServices::openUrl(url);
return false;
}
return true;
}
};如您所见,我刚刚重新实现了虚拟方法acceptNavigationRequest of QWebEnginePage,以便从单击的:url链接中检索url。我不知道这是你想要实现的,但我希望这会有所帮助。
发布于 2016-04-07 01:17:26
“谢谢你,”亚历克西斯·P.我拿到了。
class MyWebPage : public QWebEnginePage
{
Q_OBJECT
public:
MyWebPage(QObject* parent = 0) : QWebEnginePage(parent){}
bool acceptNavigationRequest(const QUrl & url, QWebEnginePage::NavigationType type, bool)
{
if (type == QWebEnginePage::NavigationTypeLinkClicked)
{
//QDesktopServices::openUrl(url);
emit linkClicked(url);
return false;
}
return true;
}
signals:
void linkClicked(const QUrl&);
};在我的窗户课上:
webView = new QWebEngineView(ui->verticalLayoutWidget);
webView->setPage(new MyWebPage());
ui->verticalLayout->addWidget(webView);
connect(webView- >page(),SIGNAL(linkClicked(QUrl)),this,SLOT(linkClicked(QUrl)));https://stackoverflow.com/questions/36446246
复制相似问题