1

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

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

4

1 回答 1

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];
于 2010-06-21T05:47:19.697 回答