假设我有一个简单的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)