我想从脚本中访问我的CoreProxy实例中的存储对象,如下所示:
CoreProxy proxy(core);
QScriptEngine engine;
QScriptValue coreInScript = engine.newQObject(&proxy);
engine.globalObject().setProperty("acq", coreInScript);
engine.evaluate("acq.storage.start()");
但是QScriptEngine给了我这个错误:
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();
};
我的StorageProxy类:
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");
我的代码中缺少什么?
答案 0 :(得分:0)
您需要将storage
成员定义为property:
Q_PROPERTY(StorageProxy* storage READ storage)
有关您可以对此宏执行的操作的详细信息,请参阅The Property System。当你使用Qt脚本时,我已经给出了Qt 4.8文档的链接,这是没有积极开发的;有关Qt 5.1可用内容的更多信息,请参阅Scripting文档。