From f7b86e118f47ab2a4796e1f8e10e48be2cfdfb12 Mon Sep 17 00:00:00 2001 From: Jesse Qu Date: Mon, 5 Jan 2026 17:29:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=20Property=20Editor=20?= =?UTF-8?q?=E6=A0=B7=E4=BE=8B=E2=80=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/CommonInclude.h | 18 ++++++++++++++++++ include/designerScene.h | 3 ++- include/graphicsItem/graphicsBusSectionItem.h | 7 +++++++ include/mainwindow.h | 6 +++++- source/mainwindow.cpp | 14 ++++++++------ 5 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 include/CommonInclude.h diff --git a/include/CommonInclude.h b/include/CommonInclude.h new file mode 100644 index 0000000..448a985 --- /dev/null +++ b/include/CommonInclude.h @@ -0,0 +1,18 @@ +#ifndef CommonInclude_h__ +#define CommonInclude_h__ + +#include +#include +#include +#include + +#define Q_PROPERTY_VAR(Type,Name)\ + Q_PROPERTY(Type Name READ get##Name WRITE set##Name) \ + Type get##Name(){ return Name; } \ + void set##Name(Type var){ \ + Name = var; \ + qDebug() << "Set" << static_cast(this) <<#Name <<": " < +#include "graphicsItem/graphicsBaseItem.h" class GraphicsItemGroup; @@ -22,7 +23,7 @@ public: void destroyGroup(); signals: - void signalAddItem(QGraphicsItem*); + void signalAddItem(GraphicsBaseItem*); protected: void drawBackground(QPainter*, const QRectF&) override; diff --git a/include/graphicsItem/graphicsBusSectionItem.h b/include/graphicsItem/graphicsBusSectionItem.h index 8d351bd..21d601d 100644 --- a/include/graphicsItem/graphicsBusSectionItem.h +++ b/include/graphicsItem/graphicsBusSectionItem.h @@ -1,10 +1,14 @@ #ifndef GRAPHICSBUSSECTIONITEM_H #define GRAPHICSBUSSECTIONITEM_H +#include "CommonInclude.h" + #include "graphicsItem/graphicsBaseItem.h" class GraphicsBusSectionItem : public GraphicsBaseItem { + Q_OBJECT + public: explicit GraphicsBusSectionItem(const QRect &rect, QGraphicsItem *parent = nullptr); virtual ~GraphicsBusSectionItem(); @@ -14,6 +18,9 @@ public: void move(const QPointF&) override; void editShape(int, const QPointF&) override; + public: + Q_PROPERTY_VAR(int, Int) = 0; + protected: virtual QPainterPath shape() override; virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; diff --git a/include/mainwindow.h b/include/mainwindow.h index 7c0c551..95ad201 100644 --- a/include/mainwindow.h +++ b/include/mainwindow.h @@ -9,6 +9,9 @@ #include "DockAreaWidget.h" #include "DockWidget.h" +#include "QDetailsView.h" +#include "graphicsItem/graphicsBaseItem.h" + QT_BEGIN_NAMESPACE namespace Ui { class CMainWindow; } QT_END_NAMESPACE @@ -41,7 +44,7 @@ private slots: void onAction_zoomFit(); void onAction_createGroup(); void onAction_destroyGroup(); - void onSignal_addItem(QGraphicsItem*); + void onSignal_addItem(GraphicsBaseItem*); void onSignal_deleteItem(); private: @@ -59,5 +62,6 @@ private: DrawingPanel* m_pDrawingPanel; GraphicElementsPanel* m_pGraphicElementsPanel; + QDetailsView* m_pPropertiesEditorView; }; #endif // MAINWINDOW_H diff --git a/source/mainwindow.cpp b/source/mainwindow.cpp index 2066318..293c223 100644 --- a/source/mainwindow.cpp +++ b/source/mainwindow.cpp @@ -16,6 +16,9 @@ #include "FloatingDockContainer.h" #include "DockComponentsFactory.h" +#include "QDetailsView.h" +#include "util/selectorManager.h" + #include "drawingPanel.h" #include "designerScene.h" #include "graphicElementsPanel.h" @@ -67,7 +70,7 @@ void CMainWindow::initializeDockUi() // Set central widget m_pDrawingPanel = new DrawingPanel(); DesignerScene* designerScene = m_pDrawingPanel->getDesignerScene(); - connect(designerScene, SIGNAL(signalAddItem(QGraphicsItem*)), this, SLOT(onSignal_addItem(QGraphicsItem*))); + connect(designerScene, SIGNAL(signalAddItem(GraphicsBaseItem*)), this, SLOT(onSignal_addItem(GraphicsBaseItem*))); CDockWidget* centralDockWidget = new CDockWidget("CentralWidget"); centralDockWidget->setWidget(m_pDrawingPanel); auto* centralDockArea = m_pDockManager->setCentralWidget(centralDockWidget); @@ -83,11 +86,9 @@ void CMainWindow::initializeDockUi() m_pDockManager->addDockWidget(DockWidgetArea::LeftDockWidgetArea, grapicElementsDockWidget); ui->menuView->addAction(grapicElementsDockWidget->toggleViewAction()); - QTableWidget* propertiesTable = new QTableWidget(); - propertiesTable->setColumnCount(3); - propertiesTable->setRowCount(10); + m_pPropertiesEditorView = new QDetailsView(); CDockWidget* propertiesDockWidget = new CDockWidget(QString::fromWCharArray(L"属性编辑器")); - propertiesDockWidget->setWidget(propertiesTable); + propertiesDockWidget->setWidget(m_pPropertiesEditorView); propertiesDockWidget->setMinimumSizeHintMode(CDockWidget::MinimumSizeHintFromDockWidget); propertiesDockWidget->resize(250, 150); propertiesDockWidget->setMinimumSize(200,150); @@ -165,10 +166,11 @@ void CMainWindow::onAction_destroyGroup() } } -void CMainWindow::onSignal_addItem(QGraphicsItem* item) +void CMainWindow::onSignal_addItem(GraphicsBaseItem* item) { if(item) { + m_pPropertiesEditorView->setObject(static_cast(item)); QUndoCommand* addItemCommand = new AddItemCommand(item, item->scene()); m_pUndoStack->push(addItemCommand); }