我在 QGraphicsScene 的 QGraphicsView 中有一些自定义 QGraphicsItems 。
我想知道在给定(x,y)坐标的视图中是否有一个Item。
为了测试目的,我使用以下类作为QGraphicsScene:
class CustomScene : public QGraphicsScene
{
protected:
void mousePressEvent(QGraphicsSceneMouseEvent *event)
{
if (QGraphicsItem *item = itemAt(event->scenePos())) {
qDebug() << "You clicked on item" << item;
}
else {
qDebug() << "You didn't click on an item.";
}
}
};
在我的申请中,我有:
当我启动应用程序并单击绘制的矩形时,我总是有#34;您没有点击某个项目。&#34;信息。
在以前的帖子中搜索或在谷歌上搜索我没有找到我的代码无法正常工作的原因。我做错了什么?
编辑1:boundingRect()方法正确返回。我尝试添加一些 QGraphicsRectItem ,itemAt()方法正确地返回它们的信息。
答案 0 :(得分:0)
问题是我没有覆盖QPainterPath QGraphicsItem::shape () const [virtual]
方法
完成后, itemAt()方法开始按预期工作。