我已经编写了一个自定义类,它可以通过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++函数访问?或者我做错了什么?