У меня есть класс Light, наследующий класс Transform, наследующий от QObject.Класс Transform имеет функцию center (), которая возвращает Point3 (typedef из QVector3D).Я пытаюсь вызвать invokeMethod для легкого объекта, но получаю неверное возвращаемое значение.Я неправильно вызываю функцию?
QObject* obj = qobject_cast<QObject*>(lObj);
std::cout << lObj->center() << std::endl;
QVector3D retVal;
QMetaObject::invokeMethod(obj, "center",
Qt::DirectConnection,
Q_RETURN_ARG(QVector3D, retVal));
std::cout << retVal << std::endl;
и вот что я получаю ...
(0,10,0) // from lObj->center()
(0,0,0) // from invokeMethod(...)
Вот часть моего кода ...
typedef QVector3D Point3;
class Transformable : public QObject
{
Q_OBJECT
Q_INVOKABLE Point3 center() { return _center; }
...
};
class Light : public Transformable, public Entity // Entity is a non-Qt-related class
{
};
class PointLight : public Light
{
};