質問

私にはたくさんのことがあります QGraphicsScene. 。状況は、私がチェスボードを作成しており、グラフィックシーンを使用していることです。だから QGraphicsScene たくさんあります QGraphicsPixmapItems. 。これで、どうすれば王を手に入れることができますか。

アップデート:これで QGraphicsScene, 、追加しています QGraphicsPixmapItems コイン(ボード、キング、クイーン、兵士など)に他なりません。さて、特定のコインを王と言いたいなら、どうすればそれを手に入れることができますか。イテレーターの使用などの方法がいくつかあります。しかし、特定のものを見つける方法はありますか QGraphicsPixmapItem 名前で。

役に立ちましたか?

解決

あなたが王を手に入れる必要があると言うとき、あなたは白い王と黒人の間であなたのプログラムに違いをどのようにしますか?

あなたがポーンを手に入れる必要がある場合、あなたはどのようにどれを知っていますか?誰 ?あなたがあなたのアイテムで最初に見つけることができますか?

私はそれについてあまり考えていませんでしたが、たぶんあなたができることはQMAPを使用することです。キーは異なるピースの列挙であり、値は関連するものへのポインターになります QGraphicsItem. 。このようなもの :

enum Piece_e {
    KING,
    QUEEN,
    ROOK1,
    ROOK2,
    ...
    PAWN1,
    PAWN2,
    ...
};

QMap<Piece_e, QGraphicsPixmapItem*> WhitePiecesItems;
QMap<Piece_e, QGraphicsPixmapItem*> BlackPiecesItems;

シーンを作成して作品をインスタンス化するときは、マップを記入してください。

...
WhitePiecesItem[KING] = new QGraphicsPixmapItem(QPixmap("whiteking_pic"));
WhitePiecesItem[PAWN1] = new QGraphicsPixmapItem(QPixmap("whitepawn_pic"));
...

BlackPiecesItem[QUEEN] = new QGraphicsPixmapItem(QPixmap("whitequeen_pic"));
BlackPiecesItem[PAWN1] = new QGraphicsPixmapItem(QPixmap("whitepawn_pic"));
...

白い王に対応するオブジェクトを見つける必要があるとき、あなたは次のようなことをすることができます:

QGraphicsPixmapItem* pItem = WhitePiecesItem[KING];
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top