首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在linkClicked(QUrl)中模拟QWebEngineView信号?

如何在linkClicked(QUrl)中模拟QWebEngineView信号?
EN

Stack Overflow用户
提问于 2016-04-06 09:00:22
回答 2查看 2.4K关注 0票数 4

我正在将我的项目从Qt WebKit移植到Qt5.6中的Qt WebEngine。当在linkClicked(QUrl)上单击href时,我想发出QWebView信号,但是QWebEngineView没有信号linkClicked(QUrl)。

如何模仿linkClickedSignal(QUrl)?

从Qt WebKit移植到Qt WebEngine

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-06 10:03:44

我不确定它会对你有用,但在我的应用程序使用QWebEngineView,我有可点击的链接,必须打开相应的网站在浏览器。

我的做法是这样的:

代码语言:javascript
复制
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。我不知道这是你想要实现的,但我希望这会有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2016-04-07 01:17:26

“谢谢你,”亚历克西斯·P.我拿到了。

代码语言:javascript
复制
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&);

};

在我的窗户课上:

代码语言:javascript
复制
webView = new QWebEngineView(ui->verticalLayoutWidget);
webView->setPage(new MyWebPage());
ui->verticalLayout->addWidget(webView);
connect(webView- >page(),SIGNAL(linkClicked(QUrl)),this,SLOT(linkClicked(QUrl)));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36446246

复制
相关文章

相似问题

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