2016-04-06 1 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; 
    } 
}; 

Как вы можете видеть, я просто переписана виртуальный метод acceptNavigationRequest из QWebEnginePage, чтобы получить 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))); 
Смежные вопросы