我的QGraphicsScene
中有很多东西。情况是我正在创建一个棋盘,并且正在使用Graphics场景。所以QGraphicsScene
有这么多QGraphicsPixmapItems
。现在,我怎么能得到国王。
更新
在这个QGraphicsScene
中,我添加的QGraphicsPixmapItems
只是硬币(棋盘,国王,女王,士兵等)。现在,如果我想移动一个特定的硬币说金,那么我怎么能得到它。有一些方法,比如使用迭代器。但有没有办法找到一个特定的QGraphicsPixmapItem
名称。
答案 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];