Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何删除选定的图形项目组?_C++_Qt_Qt5_Qgraphicsscene_Qgraphicsitem - Fatal编程技术网

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

C++ 如何删除选定的图形项目组?,c++,qt,qt5,qgraphicsscene,qgraphicsitem,C++,Qt,Qt5,Qgraphicsscene,Qgraphicsitem,在具有多个组的场景中,如何删除选定的项目组? 当我尝试删除组时,它只删除上次创建的组 #include "graphicscene.h" QGraphicsItemGroup *mpGroup ; void GraphicScene::keyReleaseEvent(QKeyEvent * keyEvent) { if( keyEvent->key() == Qt::Key_F1) { qDebug() << "group created";

在具有多个组的场景中,如何删除选定的项目组? 当我尝试删除组时,它只删除上次创建的组

#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 ;
        }
    } 
}
#包括“graphicsene.h”
QGraphicsSiteMgroup*mpGroup;
void GraphicsScene::keyReleaseEvent(QKeyEvent*keyEvent)
{
如果(keyEvent->key()==Qt::key\u F1){
qDebug()设置标志(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsMovable);

qDebug()一种可能的解决方案是使用
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 ;
            }
        }
    } 
}
void graphicsecene::keyReleaseEvent(QKeyEvent*keyEvent){
如果(keyEvent->key()==Qt::key\u F1)
{
qDebug()设置标志(QGraphicsItem::ItemIsSelectable |
QGraphicsItem::ItemIsMovable);

qDebug()谢谢…实际上我必须删除所选组…它删除列表中的最后一个…@Sagar重试