2010-09-17 40 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作为参数。现在我可以毫无问题地获得这些属性。 似乎现在工作得很好:)

相关问题