访问QGraphicsScene中的其他项目内容

Access other item contents within a QGraphicsScene

本文关键字:项目 其他 QGraphicsScene 访问      更新时间:2023-10-16

我有一个dialog.cpp文件,它在这里我创建了我的QGraphicsScene,使用QGraphicsView

我创建了两个继承QGraphicsPixmapItem"Vehicle""Junction"的类。这两个对象都被添加到我的dialog.cpp文件中的同一个QGraphicsScene中。

我想从我的"Vehicle"对象中调用"Junction"成员的方法。该方法返回一个我需要的布尔值。

这更像是一个面向c++的问题,因为我相信有一个简单的解决方案,利用访问父节点。

项目背景信息:每个"Vehicle"沿着道路移动并接近"Junction"。然后车辆必须询问交叉口"我的车道有绿灯吗?",交叉口将回复"true/false"

在通过QT文档审查可能的解决方案后,我已经部分解决了这个问题。

调用this->scene()允许访问添加对象的场景的成员函数。因为我知道我的对象的坐标,所以我调用this->scene()->itemAt(240,0);来检索指向该项的指针。

返回的指针是场景中所提供坐标的最上面的项。如果这提供了一个问题,请交替使用scene()->items()来检索现场所有项目的列表。

但是,这只能访问,而不能访问存储该项的vector。我一直在研究使用->parent()函数,并认为这可能是解决方案,并结合动态将其转换为所需的指针。如果我找到一个完整的解决方案,将更新答案。