优化属性设置

This commit is contained in:
Jesse Qu 2026-01-06 16:21:11 +08:00
parent f7b86e118f
commit 0c02c01f3f
2 changed files with 13 additions and 1 deletions

View File

@ -46,6 +46,7 @@ private slots:
void onAction_destroyGroup(); void onAction_destroyGroup();
void onSignal_addItem(GraphicsBaseItem*); void onSignal_addItem(GraphicsBaseItem*);
void onSignal_deleteItem(); void onSignal_deleteItem();
void onSignal_selectionChanged();
private: private:
QAction* m_pSavePerspectiveAction = nullptr; QAction* m_pSavePerspectiveAction = nullptr;

View File

@ -71,6 +71,7 @@ void CMainWindow::initializeDockUi()
m_pDrawingPanel = new DrawingPanel(); m_pDrawingPanel = new DrawingPanel();
DesignerScene* designerScene = m_pDrawingPanel->getDesignerScene(); DesignerScene* designerScene = m_pDrawingPanel->getDesignerScene();
connect(designerScene, SIGNAL(signalAddItem(GraphicsBaseItem*)), this, SLOT(onSignal_addItem(GraphicsBaseItem*))); connect(designerScene, SIGNAL(signalAddItem(GraphicsBaseItem*)), this, SLOT(onSignal_addItem(GraphicsBaseItem*)));
connect(designerScene, SIGNAL(selectionChanged()), this, SLOT(onSignal_selectionChanged()));
CDockWidget* centralDockWidget = new CDockWidget("CentralWidget"); CDockWidget* centralDockWidget = new CDockWidget("CentralWidget");
centralDockWidget->setWidget(m_pDrawingPanel); centralDockWidget->setWidget(m_pDrawingPanel);
auto* centralDockArea = m_pDockManager->setCentralWidget(centralDockWidget); auto* centralDockArea = m_pDockManager->setCentralWidget(centralDockWidget);
@ -170,7 +171,7 @@ void CMainWindow::onSignal_addItem(GraphicsBaseItem* item)
{ {
if(item) if(item)
{ {
m_pPropertiesEditorView->setObject(static_cast<QObject*>(item)); // m_pPropertiesEditorView->setObject(static_cast<QObject*>(item));
QUndoCommand* addItemCommand = new AddItemCommand(item, item->scene()); QUndoCommand* addItemCommand = new AddItemCommand(item, item->scene());
m_pUndoStack->push(addItemCommand); m_pUndoStack->push(addItemCommand);
} }
@ -186,3 +187,13 @@ void CMainWindow::onSignal_deleteItem()
m_pUndoStack->push(deleteItemCommand); //push时会自动调用一次command的redo函数 m_pUndoStack->push(deleteItemCommand); //push时会自动调用一次command的redo函数
} }
void CMainWindow::onSignal_selectionChanged()
{
QList<QGraphicsItem*> selectedItems = m_pDrawingPanel->getQGraphicsScene()->selectedItems();
if(selectedItems.count() != 1) {
m_pPropertiesEditorView->setObject(m_pDrawingPanel->getQGraphicsScene());
return;
}
GraphicsBaseItem *item = static_cast<GraphicsBaseItem*>(selectedItems.first());
m_pPropertiesEditorView->setObject(static_cast<QObject*>(item));
}