QML - 将Javascript关联数组传递给C ++

时间:2014-06-23 22:22:41

标签: javascript c++ arrays qml qt-quick

在我的应用程序中,我有一个注册为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.我可能需要额外转换吗?

1 个答案:

答案 0 :(得分:5)

好的,我回答我自己的问题) 文档不是很清楚,但据我所知,Qt将JS数组转换为QVariantList并将 JS对象转换为QVariantMap 所以在我的情况下,我只需要创建一个对象,而不是数组:

var arr = {};