#include "locateNode.h" #include #include #include "nodeGraphicsObject.h" NodeGraphicsObject *locateNodeAt(QPointF scenePoint, QGraphicsScene &scene, QTransform const &viewTransform) { // items under cursor QList items = scene.items(scenePoint, Qt::IntersectsItemShape, Qt::DescendingOrder, viewTransform); // items convertable to NodeGraphicsObject std::vector filteredItems; std::copy_if(items.begin(), items.end(), std::back_inserter(filteredItems), [](QGraphicsItem *item) { return (qgraphicsitem_cast(item) != nullptr); }); NodeGraphicsObject *node = nullptr; if (!filteredItems.empty()) { QGraphicsItem *graphicsItem = filteredItems.front(); node = dynamic_cast(graphicsItem); } return node; }