Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QtScriptEngine:从脚本中的对象访问子对象_C++_Qt_Qtscript_Qt5.1 - Fatal编程技术网

C++ QtScriptEngine:从脚本中的对象访问子对象

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实例中的存储对象,如下所示:

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的更多信息,请参阅文档