2010-06-18 5 views
1

나는 내 많은 것들이 내 QGraphicsScene에 있습니다. 상황은 체스 판을 만들고 그래픽 장면을 사용하고 있습니다. 그래서 QGraphicsScene에는 매우 많은 QGraphicsPixmapItems이 있습니다. 이제 어떻게하면 왕을 얻을 수 있습니까?Qt - QGraphicsScene에서 특정 항목을 잡는 방법

업데이트 :이 QGraphicsScene에서 , 내가 추가하고 동전 (보드, 킹, 퀸, 군인 등) 아무것도 없습니다 QGraphicsPixmapItems. 이제 특정 동전을 움직여서 King이라고 말하면, 어떻게 얻을 수 있습니까? 반복자를 사용하는 것과 같은 몇 가지 방법이 있습니다. 그러나 그 이름으로 특정 QGraphicsPixmapItem을 찾을 수있는 방법이 있습니까?

+0

"get the king"이란 무엇을 의미합니까? 정의되고 프로그래밍 방식으로 입력하십시오. –

+0

동전? 너는 조각들을 말하는거야? – ssc

답변

0

당신이 왕을 잡아야한다고 말하면, 당신은 백인 왕과 흑인 왕 사이의 프로그램에서 어떻게 차이를 만들 수 있습니까?

Pawn을 가져와야하는 경우 어떻게 알 수 있습니까? 누구? 첫 번째 항목은 항목에서 찾을 수 있습니까?

나는 그것에 대해 많이 생각하지 않았지만, 아마도 당신이 할 수있는 일은 QMap을 사용하는 것입니다. 키는 다른 부분의 열거 형이며 값은 관련 QGraphicsItem에 대한 포인터가됩니다. 이런 식으로 뭔가 : 당신을 당신이 화이트 킹에 해당하는 개체를 찾을 필요가

... 
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")); 
... 

:

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

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

것은 당신이 당신의 장면을 만들고 당신의 조각을 instanciating, 당신은지도를 채울 수 있습니다

QGraphicsPixmapItem* pItem = WhitePiecesItem[KING]; 
+0

답장을 보내 주셔서 감사합니다. 지도 대신에 나는 두 개의 벡터를 유지했다. – prabhakaran

관련 문제