Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在QWebEngineView中模拟点击链接(QUrl)信号?_C++_Qt - Fatal编程技术网

C++ 如何在QWebEngineView中模拟点击链接(QUrl)信号?

C++ 如何在QWebEngineView中模拟点击链接(QUrl)信号?,c++,qt,C++,Qt,我正在将我的项目从Qt WebKit移植到Qt5.6中的Qt WebEngine。我想在QWebView上单击a href时发出linkClicked(QUrl)信号,但QWebEngineView没有信号linkClicked(QUrl) 如何模拟linkClickedSignal(QUrl) .我不确定它是否对您有用,但在我使用QWebEngineView的应用程序中,我有可单击的链接,必须在浏览器中打开相应的网站 我是这样做的: class MyQWebEnginePage : publi

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

如何模拟linkClickedSignal(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;
    }
};

如您所见,我刚刚重新实现了
QWebEnginePage
的虚拟方法
acceptNavigationRequest
,以便从单击的链接中检索url:
url
。我不知道这是你想要实现的目标,但我希望这能有所帮助。

谢谢你@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)));