[英]Convert nativeObject to QObject qt5 c++
我在使用QObject时遇到问题。 在我的代码中,我尝试在Qt5中向Javascript添加对象。
#include <QtGui>
#include <QtWebKit>
#include <QApplication>
#include <QWebView>
#include <QWebFrame>
#include <QWebPage>
#include <iostream>
#include <string>
using namespace std;
class nativeObject : public QObject {
Q_OBJECT
public:
string version;
};
int main(int argc, char** argv) {
nativeObject test;
test.version = "BETA";
QApplication app(argc, argv);
QWebView view;
QWebFrame *frame = view.page()->mainFrame();
frame->addToJavaScriptWindowObject("someNameForMyObject", &test);
view.setUrl(QUrl("http://google.com"));
view.show();
return app.exec();
}
运行代码会出现以下错误:
main.obj:-1: error: LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall nativeObject::metaObject(void)const " (?metaObject@nativeObject@@UBEPBUQMetaObject@@XZ)
main.obj:-1: error: LNK2001: unresolved external symbol "public: virtual void * __thiscall nativeObject::qt_metacast(char const *)" (?qt_metacast@nativeObject@@UAEPAXPBD@Z)
main.obj:-1: error: LNK2001: unresolved external symbol "public: virtual int __thiscall nativeObject::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@nativeObject@@UAEHW4Call@QMetaObject@@HPAPAX@Z)
release\webkit.exe:-1: error: LNK1120: 3 unresolved externals
我找不到任何“好的”和相关的文档,因为我在qt和C ++编程中是一个新手。 我是否错误地声明了QObject
或我做错了什么?
尝试这个:
frame->addToJavaScriptWindowObject("someNameForMyObject", &test);
它需要QObject*
但需要设置QObject
。
void QWebFrame::addToJavaScriptWindowObject(const QString & name, QObject * object, ValueOwnership own = QtOwnership)
&
在这里用于获取对象的地址,因为它不是指针,还可以创建nativeObject
作为指针:
nativeObject *test = new nativeObject;
在这种情况下
frame->addToJavaScriptWindowObject("someNameForMyObject", test);
将有效,因为test
已经是指针。 请注意,对于指针,我们使用->
代替.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.