2011-08-31 2 views
1

실패 levelObjects가 그 QMaps의 QVariants의 QList를 실물 : 나는 QMaps 중 하나에 뭔가의 값을 변경하려고 할 때, 나중에Qt는 QMap.insert() 내가 가진

QList<QVariant> levelObjects; 

, 그것은 아무튼 (

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 

를 취소하려면와 코드 (사람의 기분을 상하게하는 라인을 통해 스테핑 :

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(); 

생산 : 'T는 아무것도 할 것으로 보인다)), QVariants와 관련된 여러 어셈블리 서브 루틴을 거친 다음 QMap :: insert()를 거쳐 더 많은 어셈블리가 생성된다는 것을 알 수 있습니다. 내 생각에 이것은 다른 곳에서 코드가 실행되는 어떤 종류의 신호를 유발했을 수도 있지만 그럴 것 같지 않습니다.

의견이 있으십니까?

편집 : 해결 방법을 통해 문제를 해결했습니다. 중간 QVariant를 없애고 levelObject를 QMaps의 QList가되도록했습니다. 그러나, 왜 이런 일이 일어 났는지에 대한 통찰력이 있다면 나는 여전히 궁금합니다. 라인에

답변

3

:

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

levelObjects[id].toMap()

는 QMap 객체를 반환하고, 상기 삽입이 완료되는 반환 QMap 객체 (levelObjects 목록에없는 원래 QVariant)이다.

+0

아, 맞아. 감사. – numegil