2011-08-18 3 views
0

Je reçois cette erreur:erreur: aucune fonction de mise en correspondance pour l'appel à

main.cpp:31: error: no matching function for call to 'QWebFrame::addToJavaScriptWindowObject(QString, Eh*&)' 
candidates are: void QWebFrame::addToJavaScriptWindowObject(const QString&, QObject*) 

Voici le code source:

#include <string> 
#include <QtGui/QApplication> 
#include <QWebFrame> 
#include <QWebView> 
#include <QGraphicsWebView> 
#include <QWebPage> 
#include "html5applicationviewer.h" 

class Eh 
{ 
    int lol() 
    { 
     return 666; 
    } 
}; 

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 

    Html5ApplicationViewer viewer; 
    viewer.setOrientation(Html5ApplicationViewer::ScreenOrientationAuto); 
    viewer.showExpanded(); 
    viewer.loadFile(QLatin1String("html/index.html")); 

    QWebPage *page = viewer.webView()->page(); 
    QWebFrame *frame = page->mainFrame(); 

    Eh *s = new Eh(); 

    frame->addToJavaScriptWindowObject(QString("test"), s); 

    return app.exec(); 
} 

J'ai essayé de donner une nouvelle instance de Eh et Eh classe lui-même. Dans les deux cas, il échoue. Aussi je ne peux pas donner le non-pointeur de celui-ci puisque new renvoie un pointeur.

Ma question est la suivante: pourquoi est-ce Eh*& et non Eh*?

Répondre

1

addToJavaScriptWindowObject prend un QObject* comme second paramètre. Vous devez donc avoir Eh hériter de QObject.

Essayez quelque chose comme ceci:

class Eh : public QObject { 
    Q_OBJECT 
public: 
    Eh(QObject *parent = 0) : QObject(parent) { 
    } 

    int lol() { 
     return 666; 
    } 
}; 
+0

Le problème est donc pas le caractère '&'? – Tower

+0

@Evan Teran: Je pense que le Q de l'OP n'est pas sur la raison de l'erreur, c'est pourquoi le message d'erreur spécifique faux. –

+0

Non, ça ne devrait pas être le problème. –

Questions connexes