我已經編寫了一個自定義類,它可以通過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++函數訪問?或者我做錯了什麼?