我有以下功能: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 2015-02-12 11:02:24