我收到此错误:
main.cpp:31: error: no matching function for call to 'QWebFrame::addToJavaScriptWindowObject(QString, Eh*&)'
candidates are: void QWebFrame::addToJavaScriptWindowObject(const QString&, QObject*)
这是源代码:
#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();
}
我尝试提供
Eh
和Eh
类本身的新实例。在这两种情况下,它都会失败。我也不能给出它的非指针,因为new返回了一个指针。我的问题是:为什么是
Eh*&
而不是Eh*
? 最佳答案
addToJavaScriptWindowObject
将QObject*
作为其第二个参数。因此,您需要让Eh
从QObject
继承。
尝试这样的事情:
class Eh : public QObject {
Q_OBJECT
public:
Eh(QObject *parent = 0) : QObject(parent) {
}
int lol() {
return 666;
}
};