2016-04-06 9 views

答えて

0

私は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。私はそれがあなたが達成したいことであるかどうかはわかりませんが、それが助けてくれることを願っています。

1

ありがとうございました@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))); 
関連する問題