![](/img/trans.png)
[英]Qt: having problems responding on QWebView::linkClicked(QUrl) - slot signal issue
[英]How to emulate linkClicked(QUrl) signal in QWebEngineView?
我在Qt5.6中將我的項目從Qt WebKit移植到Qt WebEngine。 我想在linkClicked(QUrl)
上單擊href時發出linkClicked(QUrl)
信號,但QWebEngineView沒有信號linkClicked(QUrl)。
如何模擬linkClickedSignal(QUrl)?
謝謝@Alexis 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)));
我不確定它對你有用,但在我使用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
的QWebEnginePage
以檢索鏈接的URL點擊 : url
。 我不知道這是你想要達到的目標,但我希望有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.