我编写了一个自定义类,可以通过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 ++函数访问?或者我做错了什么?
答案 0 :(得分:1)
确定。经过几次尝试,我修好了它 我更改了sendMessage函数以接受QScriptValue而不是Message as参数。现在我可以毫无问题地从中获取属性。 似乎现在工作正常:))