У меня есть набор классов С++, открытых для javascript в Qt 5, на основе QJSEngine (поскольку сценарий 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
Есть ли способ убедиться, что GetParent в javascript распознается как фактический объект типа A, а не как QVariant?