2014-02-20 8 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. 

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 클래스 :

여기 내 CoreProxy 클래스

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

당신은 propertystorage 멤버를 정의해야

Q_PROPERTY(StorageProxy* storage READ storage) 

이 매크로 사용하여 수행 할 수있는 작업에 대한 자세한 내용은 The Property System를 참조하십시오. Qt Script를 사용하면서 Qt 4.8 문서에 대한 링크를 제공했습니다. Qt Script는 활발히 개발되지 않았습니다. Qt 5.1에서 제공되는 기능에 대한 자세한 내용은 Scripting 설명서를 참조하십시오.