【发布时间】:2017-11-14 13:34:42
【问题描述】:
我正在尝试将 JS 对象(映射)传递给带有签名的 C++ 成员函数
Q_INVOKABLE virtual bool generate(QObject* context);
通过使用
a.generate({foo: "bar"});
方法被调用(通过断点检测),但是传递的context参数是NULL。由于the documentation 提到JS 对象将作为QVariantMap 传递,所以我尝试使用签名
Q_INVOKABLE virtual bool generate(QVariantMap* context);
但这在 MOC 期间失败了。使用
Q_INVOKABLE virtual bool generate(QVariantMap& context);
导致 QML 在运行时找不到方法(错误消息是“未知方法参数类型:QVariantMap&”)。
文档中只有一个将QVariantMap 从 C++ 传递到 QML 的示例,而不是另一个方向。
使用public slot 而不是Q_INVOKABLE 会显示完全相同的行为和错误。
【问题讨论】:
标签: javascript c++ qt qml