我在Qt 5中有一组基于QJSEngine暴露给javascript的C ++类(因为Qt脚本似乎已被弃用)。
我的QObject派生类A和B具有Q_OBJECT宏并且也使用Q_DECLARE_METATYPE宏。
我已经为我的类公开了工厂函数,允许我从javascript内部创建新实例。以下所有工作正常:
a = namespace.createNewA(); // QJSEngine reports a type A object
b = namespace.createNewB(); // QJSEngine reports a type B object
b.SetParent(a); // SetParent is a slot of B taking a const A& parameter, gets called correctly
// But now.
b.GetParent(); // Reports QVariant(A), even though this is a slot: A GetParent() const
有没有办法让我确保javascript中的GetParent被识别为实际类型A对象,而不是QVariant?
答案 0 :(得分:2)
我找出了原始代码的问题:
这需要对我的代码设置进行一些更改,因为返回的值过去是暂时的,但我可以忍受。