2014-02-20 23 views
0

訪問對象的子對象我想從一個腳本如下訪問我的CoreProxy實例內的存儲對象:QtScriptEngine:從腳本

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

您需要定義storage成員作爲property

Q_PROPERTY(StorageProxy* storage READ storage) 

有關你可以用這個宏做什麼的更多信息,請參閱The Property System。我已經提供了Qt 4.8文檔的鏈接,因爲您正在使用Qt Script,而這並不積極開發;有關Qt 5.1的更多信息,請參見Scripting文檔。