我收到此错误:
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*
?
答案 0 :(得分:1)
addToJavaScriptWindowObject
将QObject*
作为其第二个参数。因此,您需要Eh
继承QObject
。
尝试这样的事情:
class Eh : public QObject {
Q_OBJECT
public:
Eh(QObject *parent = 0) : QObject(parent) {
}
int lol() {
return 666;
}
};