2017-03-25 1 views
0

J'ai du mal à relier QWebEnginePage-fullScreenRequested, je suis en train de la manière suivante fourmi donne l'erreursignaux et machines à sous dans qt5.7 - QWebEnginePage

main.cpp:58: error: expected primary-expression before ',' token connect(this->view->page(), SIGNAL(fullScreenRequested(QWebEngineFullScreenRequest)), &QWebEngineFullScreenRequest, SLOT(&QWebEngineFullScreenRequest::accept()));

Mon code:

class WebView:public QObject{ 
public: 
    char* home_page; 
    QWebEngineView* view=new QWebEngineView(); 
    WebView(char* page=(char*)"https://google.com"){ 
     this->home_page=page; 
     createWebView(); 
     this->view->settings()->setAttribute(QWebEngineSettings::FullScreenSupportEnabled,true); 
     connect(this->view->page(),SIGNAL(fullScreenRequested(QWebEngineFullScreenRequest)),&QWebEngineFullScreenRequest,SLOT(&QWebEngineFullScreenRequest::accept())); 
    } 
    void createWebView(){ 
     this->view->load(QUrl(this->home_page)); 
    } 
    QWebEngineView* returnView(){ 
     return this->view; 
    } 
    void home(){ 
     this->view->load(QUrl(this->home_page)); 
    } 
}; 

Aidez-moi s'il vous plaît à résoudre ce problème. Merci

Répondre

1

Votre problème est que la connexion de signal/emplacement prend un objet source, ainsi qu'un objet de destination en tant que paramètres, et vous avez mélangé les 2 manières de se connecter.

Il soit

connect(&src, &FirstClass::signalName, &dest, &SecondClass::slotName); 

Ou

connect(&src, SIGNAL(signalName(argType)), &dest, SLOT(slotName(artType))); 

Dans votre cas &QWebEngineFullScreenRequest est pas un objet, au lieu que vous essayez de prendre l'adresse d'une classe. Vous avez besoin d'une instance de classe QWebEngineFullScreenRequest pour vous y connecter.

Manière correcte:

WebView(...) 
    { 
     //... 
     connect(this->view->page(), &QWebEnginePage::fullScreenRequested, this, &WebView::acceptFullScreenRequest); 
    } 

private slots: 
    void acceptFullScreenRequest(QWebEngineFullScreenRequest request) { 
     request.accept(); 
    } 

Quelques autres remarques: fichier

  • Essayez de déclaration de classe séparée dans un en-tête (.h), de la définition (Cpp).
  • Au lieu de char* page=(char*)"https://google.com", de son mieux pour les littéraux à utiliser const char*, ou mieux encore QString que vous utilisez serait mieux Qt
  • QWebEngineView* view=new QWebEngineView(); à instancier dans votre WebView constructeur
  • this-> est unecessary

WebView(QObject* parent = nullptr, QString page = "https://google.com"): 
    QObject(parent), 
    home_page(page), 
    view(new QWebEngineView()) 
{ 
//... 
}