将自定义对象从QtScript传递到C ++时出错

时间:2010-09-17 10:09:32

标签: c++ qt qtscript

我编写了一个自定义类,可以通过Prototype在QtScript中使用。还有另一个全局类可用于打印在QtScript中生成的自定义类。

这是我的自定义类(非常简单;)):

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;
};

setter / getter只是通过qscriptvalue_cast(QScriptable :: thisObject())更改/打印相应的Message对象;

现在我的脚本看起来像这样:

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

因此,脚本编译良好,print()命令执行它应该的操作,它打印5.但问题是我的GlobalObject的sendMessage函数:

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

这段代码总是打印:“[Message] 0 0”。

MessageAnalysis注册为QtScript的“GlobalObject”。我还注册了消息和消息*作为元类型和构造函数,原型和其他一切。这似乎有效。

有谁知道为什么在QtScript中更改了值但是无法从我的C ++函数访问?或者我做错了什么?

1 个答案:

答案 0 :(得分:1)

确定。经过几次尝试,我修好了它 我更改了sendMessage函数以接受QScriptValue而不是Message as参数。现在我可以毫无问题地从中获取属性。 似乎现在工作正常:))