简体   繁体   English

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

[英]QML - Passing Javascript associative array to C++

In my app I have a class which registered as singleton for QML . 在我的应用程序中,我有一个注册为QML单例的类。 My purpose is collecting values in QML as associative array and passing this array to C++ . 我的目的是在QML中将值收集为关联数组,然后将此数组传递给C++ This is the simplified version of the class: 这是该类的简化版本:

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();
  }
}

and here I register an instance of the class as singleton: 在这里,我将类的实例注册为单例:

qmlRegisterSingletonType<Config>("myNS", 1, 0, "Config", config_singletontype_provider);

In some place in QML file I try to pass javascript array back to c++; 在QML文件中的某个地方,我尝试将javascript数组传递回c ++。

function sendValue() {
  var arr = [];
  arr["key"] = "value";
  Config.sendValue(arr);      
}

But nothing passed. 但是什么也没过去。 The map.size() in C++ returns 0. May be I need some additional conversion? C++map.size()返回0。可能需要其他转换吗?

好吧,我回答我自己的问题)的文档不是那么清楚,但是,据我了解, Qt JS数组转换为QVariantListJS对象 QVariantMap所以在我来说,我只需要创建一个对象,而不是数组:

var arr = {};

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM