在我的应用程序中,我有一个注册为QML
单身人士的课程。我的目的是将QML
中的值作为关联数组收集并将此数组传递给C++
。这是该类的简化版本:
class Config : public QObject
{
Q_OBJECT
private:
Config(QObject *parent = 0);
public:
static Config *instance();
~Config();
Q_INVOKABLE void sendValue (const QVariantMap &map) {
qWarning() << map.size();
}
}
在这里我将该类的实例注册为singleton:
qmlRegisterSingletonType<Config>("myNS", 1, 0, "Config", config_singletontype_provider);
在QML文件的某个地方,我尝试将javascript数组传递回c ++;
function sendValue() {
var arr = [];
arr["key"] = "value";
Config.sendValue(arr);
}
但没有通过。 map.size()
中的C++
会返回0.我可能需要额外转换吗?
答案 0 :(得分:5)
好的,我回答我自己的问题)
文档不是很清楚,但据我所知,Qt
将JS数组转换为QVariantList
并将 JS对象转换为QVariantMap
所以在我的情况下,我只需要创建一个对象,而不是数组:
var arr = {};