qt - 在QGraphicsScene中如何捕获特定项目

时间:2010-06-18 16:09:15

标签: qt qgraphicsscene qgraphicspixmapitem

我的QGraphicsScene中有很多东西。情况是我正在创建一个棋盘,并且正在使用Graphics场景。所以QGraphicsScene有这么多QGraphicsPixmapItems。现在,我怎么能得到国王。

更新    在这个QGraphicsScene中,我添加的QGraphicsPixmapItems只是硬币(棋盘,国王,女王,士兵等)。现在,如果我想移动一个特定的硬币说金,那么我怎么能得到它。有一些方法,比如使用迭代器。但有没有办法找到一个特定的QGraphicsPixmapItem名称。

1 个答案:

答案 0 :(得分:0)

当你说你需要获得国王时,你如何在白王和黑人之间改变你的计划?

如果你需要一个Pawn,你怎么知道哪一个?任何人 ?您可以在商品中找到第一个?

我没有想过很多,但也许你可以做的就是使用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];