在Qt5中,我有一组基于QJSEngine的C++类公开给javascript (因为Qt script似乎已被弃用)。
我的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?
发布于 2013-02-26 17:39:22
我用我的原始代码解决了问题:
在一般情况下,使用带有返回值的Qt插槽的
这需要对我的代码设置进行一些更改,因为返回值过去是临时的,但我可以接受。
https://stackoverflow.com/questions/15072226
复制相似问题