我有一组基于 QJSEngine 的 Qt 5 中暴露给 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?