QT -QGRAPHICSSCENEで特定のアイテムをキャッチする方法
-
28-09-2019 - |
質問
私にはたくさんのことがあります 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];
所属していません StackOverflow