QtWebKit Bridge 文档指出以下内容 -
复合 (JSON) 对象 JavaScript 复合对象,也称为 JSON 对象,是保存键值对列表的变量,其中所有键都是字符串,值可以是任何类型。这可以很好地转换为 QVariantMap,它只不过是 QString 到 QVariant 的 QMap。JSON 对象和 QVariantMap 之间的无缝转换允许以非常方便的方式在 C++ 和 JavaScript 环境之间传递任意结构化数据。原生 QObject 必须确保将复合值转换为 QVariantMaps 和 QVariantLists,并且保证 JavaScript 以有意义的方式接收它们。请注意,JSON 不支持的类型(例如 JavaScript 函数和 getter/setter)不会被转换。
这是否意味着,虽然 JavaScript 能够读取 QVariantList,但无法修改它?
我已经尝试为测试目的添加一个 getter 和 setter -
Q_PROPERTY( QVariantMap Settings READ GetShadowSettings WRITE SetShadowSettings )
当 JavaScript 想要访问来自 QVariantMap 的任何数据时,将调用 getter 函数。不幸的是,当 JavaScript 尝试更新 QVariantMap 时,会再次调用 getter 函数(而不是 setter 函数)。
我可以使用简单的辅助函数修改数据,例如 -
Q_INVOKABLE void Update( QString key, QVariant value ) {
settings[key] = value;
}
我只是想知道是否有一种方法可以在不需要辅助函数的情况下做到这一点?