QT-在QgraphicsScene中如何捕获特定项目
-
28-09-2019 - |
题
我有很多东西 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];
不隶属于 StackOverflow