私の友人で、Qtを使用してC++でゲームを作ろうとしています。実行時にアクセスするためにQMap
に2,を保存する必要があります。ここでコードの関連部分を貼り付けました。問題はプログラムが応答しなくなることです。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
私たちのどれもが、C++やQtのを使用して多くの経験を持っていない、と私たちは任意の助けをいただければ幸いです。
実際には、[operator []() 'を使用して、[QMap]にアイテムを挿入できます(http://doc.qt.io/qt-5/qmap.html#details)。 – thuga
@thugaはい+1を参照すると、私は決して決めることはできません...新しい値を追加するときに挿入がもっと「正しい」ように見えますが、演算子[]()は既存の値を変更するときには "正しい"私はそれらを使用する傾向があります....しかし、実際に(あなたが逃げたように)彼らは同じことをしていますが、私はアセンブリが同じかどうかを見ていない。 –
[]を使用すると、アイテムが存在しない場合はアイテムが追加されるため、危険です。だからこそ私は一般的にそれをほとんど避けているのです。 – thuga