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

5

我的应用程序中有一个类,注册为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();
  }
}

这里我将类的一个实例注册为单例模式:

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

在QML文件的某个地方,我尝试将JavaScript数组传回C++;

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

但是什么也没有发生。在C++中,map.size()返回0。可能需要进行一些额外的转换吗?

1个回答

5

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

var arr = {};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接