У меня есть объект levelObjects, который представляет собой QList из QVariants QMaps:
QList< QVariant > levelObjects;
Позже, когда я пытаюсь изменить значение чего-либо в одном из QMaps, кажется, чточто-нибудь:
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 ()), я вижу, что она проходит через кучуподпрограммы сборки, связанные с QVariants, затем проходят через QMap :: insert (), а затем еще несколько сборок.Первоначально я думал, что это могло вызвать какой-то сигнал, который приводит к выполнению кода в другом месте, но это не так.
Есть мысли?
Редактировать:Я решил проблему с помощью обходного пути - избавления от промежуточного QVariant и наличия levelObjects как QList из QMaps.Однако мне все еще любопытно, есть ли у кого-нибудь понимание того, почему это происходит.