借助其密钥访问Qmap中的值

时间:2015-06-26 11:03:30

标签: qt qmap

我有一个QMap,我将其定义为QMap<QString,ModelVariables>ModelMap,其中ModelVariables是一个参数为valuerefvalueID的结构。 我想访问结构中定义的参数值。我编写了以下代码,但它显示错误。

float hxt_val_ft04 = ModelMap.value("HXT_V_FT04");
  

错误:在&#39;之前预期的主要表达。&#39;令牌。

2 个答案:

答案 0 :(得分:0)

如果密钥匹配MVariables["HXT_V_FT04"]

ModelVariables将返回"HXT_V_FT04"个对象。否则它将默认构造该对象并返回它。所以你可以使用

MVariables["HXT_V_FT04"].value

答案 1 :(得分:0)

假设“HXT_V_FT04”是您的密钥,该值将是ModelVariables结构。您可以使用方括号访问该结构,如果它不存在则会创建一个值,或者使用.at()。 例如

if(ModelMap.contains("HXT_V_FT04"))
{
  ModelVariables mystruct = ModelMap.at("HXT_V_FT04");
  float hxt_val_ft04 = mystruct.value;
}

这与

相同
if(ModelMap.contains("HXT_V_FT04"))
  float hxt_val_ft04 =ModelMap.at("HXT_V_FT04").value;

可替换地:

// create mystruct if it doesn't exist
ModelVariables mystruct = ModelMap.at["HXT_V_FT04"];
float hxt_val_ft04 = mystruct.value;

编辑: 根据您提供的类型名称等,我认为您需要看起来像这样的内容:

// declare the map
Map<QString,ModelVariables> ModelMap;
ModelVariables MVar;

QString key = "HXT_V_FT04";
// assign to Mvar.value
MVar.value = 10.0;

// insert into the map
ModelMap.insert(key, MVar);

// do something

// read back the value in MVar
float val = ModelMap.at(key).value;
//or 
float val = ModelMap[key].value;
//or
float val = ModelMap["HXT_V_FT04"].value;
// or 
ModelVariables mystruct = ModelMap["HXT_V_FT04"];
float val = mystruct.value;