2010-09-17 38 views
2

我已經編寫了一個自定義類,它可以通過Prototype在QtScript中使用。另外還有一個全局類可用於打印在QtScript中生成的自定義類。將自定義對象從QtScript傳遞到C++時出錯

這是我的自定義類(非常簡單;)):

class Message 
{ 
public: 
    int source; 
    int target; 
}; 

這是我使用的原型:

class MessagePrototype : public QObject, public QScriptable 
{ 
    Q_OBJECT 
    Q_PROPERTY(int source READ getSource WRITE setSource) 
    Q_PROPERTY(int target READ getTarget WRITE setTarget) 
public: 
    void setSource(const int source); 
    int getSource() const; 
    void setTarget(const int target); 
    int getTarget() const; 
}; 

設定器/吸氣劑只更改/印刷的相應消息對象通過qscriptvalue_cast(QScriptable :: thisObject());

現在我的腳本是這樣的:

var test = new Message; 
test.source = 5; 
print(test.source); 
GlobalObject.sendMessage(test); 

因此,腳本編譯罰款和打印()命令做什麼它應該,它打印5.但問題是我GlobalObject的SendMessage函數:

void MessageAnalysis::sendMessage(Message msg) 
{ 
    qDebug() << "[Message]" << msg.source << msg.target; 
} 

這段代碼總是打印:「[消息] 0 0」。

MessageAnalysis已註冊爲QtScript的「GlobalObject」。我還註冊了消息和消息*作爲元類型和構造函數,原型和其他一切。這似乎工作。

有誰知道爲什麼QtScript中的值已被更改但無法從我的C++函數訪問?或者我做錯了什麼?

回答

1

好的。經過多次嘗試,我修好了。
我改變了sendMessage函數來接受QScriptValue而不是Message作爲參數。現在我可以毫無問題地獲得這些屬性。 似乎現在工作得很好:)

相關問題