У меня есть следующие функции:Qt вызвать метод с QVariant
class TestClass: public QObject
{
Q_OBJECT
public:
Q_INVOKABLE QString test() { return QString("test"); }
};
И я хочу, чтобы вызвать метод испытания, но получить тип возвращаемого значения, как QVariant, а не как QString. Поэтому я пробовал это:
TestClass obj;
QVariant returnedValue;
bool rslt= QMetaObject::invokeMethod(&obj, "test", Qt::DirectConnection,
Q_RETURN_ARG(QVariant, returnedValue)
);
QString strVar = returnedValue.toString();
но он не работает, invoke возвращает false;
Если вы получаете тип возвращаемого значения как QString, он работает, но, к сожалению, это не будет использоваться для меня, потому что мне нужно знать тип возврата перед вызовом функции.
QString r;
bool rslt= QMetaObject::invokeMethod(&obj, "test", Qt::DirectConnection,
Q_RETURN_ARG(QString, r)
);
Большое спасибо за ваше предложение. Я сделал небольшой пример кода, который работает, я отправлю его в качестве ответа. Но все же я не понимаю, почему это работает, если вы, возможно, можете объяснить – user152508