借助其键访问 Qmap 中的值
Accessing the value in Qmap with the help of its key
我有一个 QMap
,我将其定义为 QMap<QString,ModelVariables>ModelMap
,其中 ModelVariables
是一个具有参数 valueref
、value
和 [=16 的结构=].
我想访问结构中定义的参数值。我写了下面的代码,但它显示错误。
float hxt_val_ft04 = ModelMap.value("HXT_V_FT04");
ERROR: expected primary expression before '.' token.
如果有键匹配 "HXT_V_FT04"
,MVariables["HXT_V_FT04"]
会 return 一个 ModelVariables
对象。否则它将默认构造该对象并 return 它。所以你可以使用
MVariables["HXT_V_FT04"].value
假设 "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;
我有一个 QMap
,我将其定义为 QMap<QString,ModelVariables>ModelMap
,其中 ModelVariables
是一个具有参数 valueref
、value
和 [=16 的结构=].
我想访问结构中定义的参数值。我写了下面的代码,但它显示错误。
float hxt_val_ft04 = ModelMap.value("HXT_V_FT04");
ERROR: expected primary expression before '.' token.
"HXT_V_FT04"
,MVariables["HXT_V_FT04"]
会 return 一个 ModelVariables
对象。否则它将默认构造该对象并 return 它。所以你可以使用
MVariables["HXT_V_FT04"].value
假设 "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;