这是 invokeMethod function 的文档.
因此,如果我将字符串或 QString 类型作为参数传递,那么它就可以工作。但是是否可以将 QString 的列表、 vector 或数组作为参数传递?
P.S:参数必须是 QGenericArgument 类型,我必须使用 Q_ARG用于创建 QGenericArgument 对象的宏。
最佳答案
是的。您必须注册该类型,以便 Qt 可以正确处理它。
关于如何注册一个类型见 qRegisterMetaType和 Q_DECLARE_METATYPE
Qt 类型已经注册。所以通过例如通过 Q_ARG 的 QStringlist 应该不是问题。
QString retVal;
QStringList values = QStringList() << "aaa" << "bb" << "cccc";
QMetaObject::invokeMethod(obj, "findLongest", Qt::DirectConnection,
Q_RETURN_ARG(QString, retVal),
Q_ARG(QStringList , values));
关于c++ - 如何在 invokeMethod 函数中将列表、 vector 或数组作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35749873/