簡體   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