繁体   English   中英

Qt QMap.insert()失败

[英]Qt QMap.insert() failing

我有一个levelObjects对象,它是QMaps的QVariant的QList:

QList< QVariant > levelObjects;

稍后,当我尝试更改其中一个QMap中某物的值时,它似乎什么也没做:

qDebug() << "Before - " << levelObjects[id].toMap().value("x").toFloat() << ", newX = " << posX;
qDebug() << levelObjects[id].toMap();
QString stringNum = QString::number(posX);
levelObjects[id].toMap().insert("x", stringNum);
qDebug() << "After - " << levelObjects[id].toMap().value("x").toFloat();

生产:

Before -  207 , newX =  209.665 
QMap(("frame_name", QVariant(QString, "bumper.png") ) ( "height" ,  QVariant(QString, "25") ) ( "name" ,  QVariant(QString, "Bumper") ) ( "power" ,  QVariant(QString, "70") ) ( "rotation" ,  QVariant(QString, "0") ) ( "type" ,  QVariant(QString, "Bumper") ) ( "width" ,  QVariant(QString, "25") ) ( "x" ,  QVariant(QString, "207") ) ( "y" ,  QVariant(QString, "349") ) )  
After -  207 

逐步浏览令人讨厌的代码行(带有.insert()的代码),我可以看到它经过了一堆与QVariant相关的汇编子例程,然后经过QMap :: insert(),然后进行了更多汇编。 我最初的想法是,这可能已经触发了某种信号,导致其他地方的代码被执行,但事实并非如此。

有什么想法吗?

编辑:我通过一种解决方法解决了这个问题-摆脱了中间的QVariant并使levelObjects成为QMaps的QList。 但是,我仍然很好奇是否有人对此事有任何见解。

在线上:

levelObjects[id].toMap().insert("x", stringNum)

levelObjects[id].toMap()返回一个QMap对象,并且在返回的QMap对象(不是levelObjects列表中的原始QVariant)中完成了插入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM