C++ QtScriptEngine:从脚本中的对象访问子对象
我想通过脚本访问CoreProxy实例中的存储对象,如下所示:C++ QtScriptEngine:从脚本中的对象访问子对象,c++,qt,qtscript,qt5.1,C++,Qt,Qtscript,Qt5.1,我想通过脚本访问CoreProxy实例中的存储对象,如下所示: CoreProxy proxy(core); QScriptEngine engine; QScriptValue coreInScript = engine.newQObject(&proxy); engine.globalObject().setProperty("acq", coreInScript); engine.evaluate("acq.storage.start()"); 但是QScript引擎返回了这个错
CoreProxy proxy(core);
QScriptEngine engine;
QScriptValue coreInScript = engine.newQObject(&proxy);
engine.globalObject().setProperty("acq", coreInScript);
engine.evaluate("acq.storage.start()");
但是QScript引擎返回了这个错误:
TypeError: Result of expression 'acq.storage' [undefined] is not an object.
以下是我的CoreProxy类:
class CoreProxy : public QObject
{
Q_OBJECT
private:
Core *_core;
public:
CoreProxy(Core *core);
StorageProxy *storage;
public slots:
// Public slots for javascript interactions
QString init(QString acqId);
QString start();
QString stop();
};
class StorageProxy : public QObject
{
Q_OBJECT
private:
Core *_core;
public:
StorageProxy(Core *core);
public slots:
// Public slots for javascript interactions
QString start();
QString stop();
};
以及我的StorageProxy类:
class CoreProxy : public QObject
{
Q_OBJECT
private:
Core *_core;
public:
CoreProxy(Core *core);
StorageProxy *storage;
public slots:
// Public slots for javascript interactions
QString init(QString acqId);
QString start();
QString stop();
};
class StorageProxy : public QObject
{
Q_OBJECT
private:
Core *_core;
public:
StorageProxy(Core *core);
public slots:
// Public slots for javascript interactions
QString start();
QString stop();
};
我已经在StorageProxy的构造函数中添加了这个,但是我没有访问存储成员:
this->setObjectName("storage");
我的代码中缺少什么吗?您需要将
存储
成员定义为:
有关如何使用此宏的详细信息,请参阅。我已经给出了Qt4.8文档的链接,因为您使用的是Qt脚本,它并没有被积极开发;有关Qt 5.1的更多信息,请参阅文档