qt - 在 QGraphicsScene 中如何捕捉特定项目
Posted
技术标签:
【中文标题】qt - 在 QGraphicsScene 中如何捕捉特定项目【英文标题】:qt - In QGraphicsScene how to catch a particular item 【发布时间】:2010-06-18 16:09:14 【问题描述】:我的QGraphicsScene
中有很多东西。情况是我正在创建一个棋盘,并且正在使用图形场景。所以QGraphicsScene
有很多QGraphicsPixmapItems
。现在在这我怎么能得到国王。
更新:
在这个QGraphicsScene
中,我添加了QGraphicsPixmapItems
,它们只不过是硬币(棋盘、国王、女王、士兵等)。现在如果我想移动一个特定的硬币,比如说金,那么我怎么能得到它。有一些方法,例如使用迭代器。但是有没有办法通过它的名字找到一个特定的QGraphicsPixmapItem
。
【问题讨论】:
你所说的“得到国王”是什么意思?请以定义和编程的方式输入。 硬币?你指的是碎片吗? 【参考方案1】:当你说你需要得到国王时,你如何在你的程序中区分白色国王和黑色国王?
如果你需要一个 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];
【讨论】:
感谢您的回答。我保留了两个向量而不是地图。以上是关于qt - 在 QGraphicsScene 中如何捕捉特定项目的主要内容,如果未能解决你的问题,请参考以下文章
Qt - 如何将 QGraphicsScene 缩放到 QGraphicsView
简化 Qt 程序,我无法使用 QGraphicsScene 在 Qt 中显示图像