1
我有一個levelObjects對象,這是一個的QList QMaps的QVariants的:Qt的QMap.insert()不
QList<QVariant> levelObjects;
後來,當我試圖更改QMaps的一個東西的價值,它不「T似乎做任何事情:
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成爲QMaps的QList。不過,如果有人對此有何看法,我仍然很好奇。
啊,這是有道理的。謝謝。 – numegil