c++ - 如何删除选定的图形项目组?

标签 c++ qt qt5 qgraphicsscene qgraphicsitem

在具有多个组的场景中,如何删除所选项目组?
当我尝试删除组时,它只会删除最后创建的组。

#include "graphicscene.h"    

QGraphicsItemGroup *mpGroup ;

void GraphicScene::keyReleaseEvent(QKeyEvent * keyEvent)
{
    if( keyEvent->key() == Qt::Key_F1) {
        qDebug() << "group created";
        mpGroup = createItemGroup(selectedItems());
        mpGroup->setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsMovable);
        qDebug() << "Group Address "<< mpGroup ;
    } else if( keyEvent->key() == Qt::Key_F2)  { 
        qDebug() << "Group Before delete selected item"<< selectedItems() ;  
        if(mpGroup != NULL) {  
            destroyItemGroup(mpGroup);
            qDebug() << "Group Deleted "<< mpGroup ;
        }
    } 
}

enter image description here

最佳答案

一种可能的解决方案是使用type()验证它是否是QGraphicsItemGroup

void GraphicScene::keyReleaseEvent(QKeyEvent * keyEvent){      
    if( keyEvent->key() == Qt::Key_F1)
    {
        qDebug() << "group created";
        QGraphicsItemGroup *group = createItemGroup(selectedItems());
        group->setFlags(QGraphicsItem::ItemIsSelectable | 
                 QGraphicsItem::ItemIsMovable);
        qDebug() << "Group Address "<< group ;
    }
    else if( keyEvent->key() == Qt::Key_F2)  
    { 
        qDebug() << "Group Before delete selected item"<< selectedItems() ; 
        for(QGraphicsItem *item: selectedItems()){
            if(item->type() == QGraphicsItemGroup::Type)    
            {     
                 QGraphicsItemGroup *group = qgraphicsitem_cast<QGraphicsItemGroup *>(item);
                 destroyItemGroup(group);
                 qDebug() << "Group Deleted "<< group ;
            }
        }
    } 
}

关于c++ - 如何删除选定的图形项目组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51416506/

相关文章:

c++ - 如何在运行时使用 typeof 创建一个 void * 指针

c++ - 协助乱码翻译

c++ - mousePressEvent 有效,但 mouseMoveEvent 无效

c++ - QAbstractButton 的 SIGNAL SLOT 新符号的问题

c++ - 在 Qt C++ 中的自定义项委托(delegate)上绘制文本时的性能问题

c++ - 函数返回后如何删除堆分配的变量

c++ - 未解析的外部符号静态变量(标题中定义的方法使用的变量)

c++ - 试图理解 GCC-XML 输出变量的含义

qt - 如何从 Qt 中的堆叠小部件中删除小部件

c++ - Qt:QML Int溢出