管理场景中的项目 QT

Managing items in a scene QT

我真的很困难,我迫切需要帮助。我正在尝试在 QGraphicsScene subclass 中收集项目的一些属性(QGraphicsitem subclass 的实例)。此代码在 DiagramItem class 中,正好在双击事件中:

DiagramItem *cur;
QVector<QString> hal;
foreach(QGraphicsItem *item, this->scene()->items())
{
    cur = qgraphicsitem_cast<DiagramItem *>(item);
    hal.push_back(cur->getName());
}

现在当我的场景中有一个项目时它工作正常,但是一旦我添加另一个项目应用程序就会崩溃! 请帮忙!

你应该检查演员表的结果:

cur = qgraphicsitem_cast<DiagramItem *>(item);
if ( cur )
{
    hal.push_back(cur->getName());
}

可能您的场景中还有其他项目无法投射到 DiagramItem 对象。