친구가 Qt를 사용하여 C++로 게임을 만들려고합니다. 런타임 중에 액세스하려면 QMap
에 몇 가지 QGraphicsTextItem
을 저장하고 싶습니다. 여기에 코드의 관련 부분을 붙여 넣었습니다. 문제는 프로그램이 응답하지 않는다는 것입니다. 우리의QMap을 사용하여 객체를 저장할 때 응용 프로그램이 응답을 멈 춥니 다.
Game.cpp
int players = 6;
QGraphicsRectItem * overviewBox = new QGraphicsRectItem();
overviewBox->setRect(0, 0, 782, 686);
scene->addItem(overviewBox);
for(int i = 1; i <= players; i++) {
Container * ovContainer = new Container(overviewBox);
ovContainer->Overview(i, faceNo);
ovContainer->setPos(0, 0 + 110 * (i - 1));
info->textBoxMap[i-1] = ovContainer->textBox->playerText; // Program stops responding here
}
GameInfo.h
#ifndef GAMEINFO_H
#define GAMEINFO_H
#include "TextBox.h"
#include <QMap>
class GameInfo {
public:
GameInfo();
QMap<int, QGraphicsTextItem *> textBoxMap;
};
#endif // GAMEINFO_H
없음 ++ 또는 Qt는 C를 사용하여 많은 경험이 없으며, 우리는 어떤 도움을 주셔서 감사합니다.
실제로 [연산자]()'를 사용하여 (http://doc.qt.io/qt-5/qmap.html#details) 항목을'QMap '에 삽입 할 수 있습니다. – thuga
@thuga 예, ref를 위해 +1, 나는 더 잘 어울리는 결정을 내릴 수 없다. insert는 새로운 값을 추가 할 때 더 "정확하다"는 것처럼 보이지만, 연산자 []()는 기존 값을 수정할 때 더 "정확하다" 나는 그들을 사용하는 경향이 있지만 ... (사실을 알지 못해서) 그들은 둘 다 똑같은 짓을한다. 비록 그들이 동일한지를보기 위해 어셈블리를 보지 않았지만. –
[]를 사용하면 위험 할 수 있습니다. 존재하지 않을 경우 항목을 추가하기 때문에 위험 할 수 있습니다. 그게 내가 일반적으로 대부분의 시간을 피하는 이유입니다. – thuga