2010-06-18 27 views
1

我在我的QGraphicsScene中有太多東西。情況是我創建一個棋盤,並使用圖形場景。所以QGraphicsScene有這麼多QGraphicsPixmapItems。現在在這我怎麼能得到國王。qt - 在QGraphicsScene中如何捕捉特定物品

更新: 在這個QGraphicsScene,我加入QGraphicsPixmapItems這只不過是硬幣(板,國王,王后,士兵等)。現在,如果我想移動一個特定的硬幣說國王,那麼我怎麼能得到它。有一些方法像使用迭代器。但是有沒有什麼辦法通過它的名字找到一個特定的QGraphicsPixmapItem

+0

你是什麼意思「獲得國王」?請把它定義和編程的方式。 – 2010-06-18 18:02:42

+0

硬幣?你指的是件? – ssc 2014-09-13 12:09:51

回答

0

當你說你需要獲得國王時,你如何在白色國王和黑色國王之間的計劃中發揮不同作用?

如果你需要得到一個棋子,你怎麼知道哪一個棋子?任何人 ?第一個你可以在你的物品中找到?

我還沒有想太多,但也許你可以做的是使用QMap。關鍵是列舉不同的部分,值將是一個指向相關QGraphicsItem的指針。事情是這樣的:

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

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

當你創建你的場景和instanciating你的作品,你會填圖:

... 
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]; 
+0

謝謝你的回答。我沒有保留兩個向量。 – prabhakaran 2010-06-21 15:59:59