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

更新:在这一点 QGraphicsScene, ,我正在添加 QGraphicsPixmapItems 只不过是硬币(董事会,国王,王后,士兵等)。现在,如果我想移动特定的硬币说国王,那我该如何得到它。有一些方法,例如使用迭代器。但是有什么方法可以找到特定的 QGraphicsPixmapItem 用它的名字。

有帮助吗?

解决方案

当您说需要获得国王时,如何在白人国王和黑人之间有所不同?

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

我没有考虑过很多,但是也许您能做的就是使用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];
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top