如何从主 Window 工具箱的图形场景中删除项目?

How to Delete Item from Graphics scene from Main Window Tool Box?

在Graphic View中设置场景,在Graphic scene(subclass od QGraphicscene) class added Delete item slot.In scene class by delete key 我可以删除项目但是当我从 main window 调用时它不会删除项目。我在删除项目槽中接到电话,但 selectedItems = 0。可能导致问题的原因是什么?
在图形场景中class

    void GraphicScene::DeleteItems()//Delete Item slot in scene class
    {
       qDebug()<<"delete items"<< selectedItems().count();
       foreach(QGraphicsItem* item, selectedItems())
       {
            removeItem(item);
            delete item;
       }
    }

    void GraphicScene::keyReleaseEvent(QKeyEvent * keyEvent)// Delete key works fine
    {

         if (selectedItems().isEmpty())
              return;
         if(keyEvent->key() == Qt::Key_Delete)
         {
            DeleteItems();
         }
   }    

在主窗口中class

    MainWindow::MainWindow(QWidget *parent) 
    {
      addToolBar(Qt::TopToolBarArea, mpEditToolbar = new 
                     QToolBar());
      DeleteAction = new QAction(QIcon(":/images/delete.png"),tr("Object 
                                       &Delete"), this);
      DeleteAction->setStatusTip(tr("Delete item"));
      connect(DeleteAction,SIGNAL(triggered()),mpGraphView  , 
              SIGNAL(DeleteObject())); // grpah view connecting to delete slot
      mpEditToolbar->addAction(DeleteAction);
    }

当我使用 delete 键工作正常时,它不适用于工具箱删除操作。有什么问题?

在 Main Window class 中有 GraphicsView 和 GraphicScene 的私有成员 class(subclass) 这样就可以很容易地调用插槽。

  class MainWindow : public QMainWindow
  {
    Q_OBJECT

    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();

    private:
        GraphFrame              *mpGraphFrame;
        GraphicScene            *mpScene;
   }  

MainWindow.cpp
连接应该在您创建 GraphicScene 对象的地方

 MainWindow::MainWindow(QWidget *parent) 
 {
  addToolBar(Qt::TopToolBarArea, mpEditToolbar = new 
                 QToolBar());
  DeleteAction = new QAction(QIcon(":/images/delete.png"),tr("Object 
                                   &Delete"), this);
  DeleteAction->setStatusTip(tr("Delete item"));
  connect(DeleteAction,SIGNAL(triggered()),mpGraphScene  , 
          DeleteItems(); 
  mpEditToolbar->addAction(DeleteAction);
 }