diff --git a/include/mainwindow.h b/include/mainwindow.h index 95ad201..dd89b8d 100644 --- a/include/mainwindow.h +++ b/include/mainwindow.h @@ -46,6 +46,7 @@ private slots: void onAction_destroyGroup(); void onSignal_addItem(GraphicsBaseItem*); void onSignal_deleteItem(); + void onSignal_selectionChanged(); private: QAction* m_pSavePerspectiveAction = nullptr; diff --git a/source/mainwindow.cpp b/source/mainwindow.cpp index 293c223..ca0c0b8 100644 --- a/source/mainwindow.cpp +++ b/source/mainwindow.cpp @@ -71,6 +71,7 @@ void CMainWindow::initializeDockUi() m_pDrawingPanel = new DrawingPanel(); DesignerScene* designerScene = m_pDrawingPanel->getDesignerScene(); connect(designerScene, SIGNAL(signalAddItem(GraphicsBaseItem*)), this, SLOT(onSignal_addItem(GraphicsBaseItem*))); + connect(designerScene, SIGNAL(selectionChanged()), this, SLOT(onSignal_selectionChanged())); CDockWidget* centralDockWidget = new CDockWidget("CentralWidget"); centralDockWidget->setWidget(m_pDrawingPanel); auto* centralDockArea = m_pDockManager->setCentralWidget(centralDockWidget); @@ -170,7 +171,7 @@ void CMainWindow::onSignal_addItem(GraphicsBaseItem* item) { if(item) { - m_pPropertiesEditorView->setObject(static_cast(item)); + // m_pPropertiesEditorView->setObject(static_cast(item)); QUndoCommand* addItemCommand = new AddItemCommand(item, item->scene()); m_pUndoStack->push(addItemCommand); } @@ -186,3 +187,13 @@ void CMainWindow::onSignal_deleteItem() m_pUndoStack->push(deleteItemCommand); //push时会自动调用一次command的redo函数 } +void CMainWindow::onSignal_selectionChanged() +{ + QList selectedItems = m_pDrawingPanel->getQGraphicsScene()->selectedItems(); + if(selectedItems.count() != 1) { + m_pPropertiesEditorView->setObject(m_pDrawingPanel->getQGraphicsScene()); + return; + } + GraphicsBaseItem *item = static_cast(selectedItems.first()); + m_pPropertiesEditorView->setObject(static_cast(item)); +}