c++ - 如何在 invokeMethod 函数中将列表、 vector 或数组作为参数传递

标签 c++ arrays qt vector qml

这是 invokeMethod function 的文档.

因此,如果我将字符串或 QString 类型作为参数传递,那么它就可以工作。但是是否可以将 QString 的列表、 vector 或数组作为参数传递?

P.S:参数必须是 QGenericArgument 类型,我必须使用 Q_ARG用于创建 QGenericArgument 对象的宏。

最佳答案

是的。您必须注册该类型,以便 Qt 可以正确处理它。

关于如何注册一个类型见 qRegisterMetaTypeQ_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/

相关文章:

c++ - 在 Qt 中注册自定义 MetaType 的别名类型

c++ - 将包含数组的结构推送到 vector 中

c++ - 旧显示驱动程序上奇怪的 CUDA 内核结果

c - 使用存储为字符串的文件名数组

C - 字符串数组(二维数组)和内存分配给我带来了不需要的字符

c++ - Qt与JSON资源解析——Empty QJSONDocument

c++ - Qt C++ 视频库

c++ - 作为结构内部字段的映射的初始化值?

C++ 运算符 <<(char) 但输出但为 hexa/int

java - 查找数组中最大整数的算法