2017-04-02 5 views
0

次のコードでは、新しいタブまたはウィンドウがサイトから要求されたときに何も印刷されません。コードを動作させるにはどうすればよいですか?助けてください、私はあまりにも混乱しています。ありがとう!my codeでcreateWindowを使う方法[Qt5.8]

class WebView:public QWebEngineView{ 
protected: 
    QWebEngineView* createWindow(QWebEnginePage::WebWindowType type){ 
     switch(type){ 
     case QWebEnginePage::WebBrowserTab: { 
       std::cout<<"Tab Requested"<<std::endl; 
       return new QWebEngineView(); 
      } 
      case QWebEnginePage::WebBrowserBackgroundTab: { 
       std::cout<<"Background Tab Requested"<<std::endl; 
       return new QWebEngineView(); 
      } 
      case QWebEnginePage::WebBrowserWindow: { 
       std::cout<<"window Requested"<<std::endl; 
       return new QWebEngineView(); 
      } 
      case QWebEnginePage::WebDialog: { 
       std::cout<<"popup Requested"<<std::endl; 
       return new QWebEngineView(); 
      } 
      } 
      return nullptr; 
     } 
public: 
    QString home_page; 
    QWebEngineView* view=new QWebEngineView(); 
    WebView(QString page=QString("https://google.com")){ 
     this->home_page=page; 
     this->view->settings()->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows,true); 
     createWebView(); 
    } 
    void createWebView(){ 
     this->view->load(QUrl(this->home_page)); 
    } 

答えて

1

createWindow機能がないview部材に、WebViewクラスのメンバーのために実装されています。

#include <QApplication> 

#include <QWebEngineView> 
#include <QWebEngineSettings> 
#include <iostream> 

class WebView : public QWebEngineView 
{ 
public: 
    WebView(QString page=QString("https://google.com"), QWidget *parent = Q_NULLPTR):QWebEngineView(parent) 
    { 
     home_page = page; 
     settings()->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, true); 
    } 

    void createWebView(){ 
     load(QUrl(home_page)); 
    } 

protected: 
    QWebEngineView* createWindow(QWebEnginePage::WebWindowType type){ 
     switch(type){ 
     case QWebEnginePage::WebBrowserTab: { 
      std::cout<<"Tab Requested"<<std::endl; 
      return new QWebEngineView(); 
     } 
     case QWebEnginePage::WebBrowserBackgroundTab: { 
      std::cout<<"Background Tab Requested"<<std::endl; 
      return new QWebEngineView(); 
     } 
     case QWebEnginePage::WebBrowserWindow: { 
      std::cout<<"window Requested"<<std::endl; 
      return new QWebEngineView(); 
     } 
     case QWebEnginePage::WebDialog: { 
      std::cout<<"popup Requested"<<std::endl; 
      return new QWebEngineView(); 
     } 
     } 
     return nullptr; 
    } 

private: 
    QString home_page; 
}; 


int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    WebView web; 
    web.createWebView(); 
    web.show(); 

    return a.exec(); 
} 
関連する問題