QML基本用法中的QMap数据类型



假设我有一个简单的QMap,用C++内部的值声明和初始化,并正确地暴露给QML。

C++

QMap<QString, QMap<QString, QString>> airflow_buttons_;
//simple getter
[[nodiscard]] QMap<QString, QMap<QString, QString>> airflow_buttons() const;

QML

console.log(ClimateModel.airflow_buttons);

打印以下

(qrc:/Climate/AirflowButtons.qml:24) - QVariant(QMap<QString,QMap<QString,QString>>, QMap(("left", QMap(("top_air", "NOT_ACTIVE")))))

它给了我一个QVariant。我不知道如何将其转换为具有所需值的所需Map?

我想把它用作一个简单的JavaScript映射。

console.log(ClimateModel.airflow_buttons["left"]["top_air"]); //Should print "NOT_ACTIVE" 
console.log(ClimateModel.airflow_buttons["left"]);            //Should print the Map contents 

当前错误消息为[debug] expression for onCompleted (qrc:/Climate/AirflowButtons.qml:24) - undefined

关于我想在纯Javascript 中实现什么的示例

var myMap = {x: "Test", y: "Test 2"};
myMap["z"] = "Test 3";
console.log(myMap["z"]);                 //prints "Test 3"
console.log(JSON.stringify(myMap["z"])); //prints the map contents

我怎样才能完成这项琐碎的任务?

您应该一直使用QVariantMap:

QVariantMap airflow_buttons = {
{"left", QVariantMap{
{"top_air", "NOT ACTIVE"}}}
};

btw,在QML中,如果你喜欢,你也可以这样做:

console.log(ClimateModel.airflow_buttons.left.top_air)

最新更新