完成 Property Editor 样例‘
This commit is contained in:
parent
2891037da6
commit
f7b86e118f
|
|
@ -0,0 +1,18 @@
|
||||||
|
#ifndef CommonInclude_h__
|
||||||
|
#define CommonInclude_h__
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
#include <QSharedPointer>
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QMetaType>
|
||||||
|
|
||||||
|
#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<QObject*>(this) <<#Name <<": " <<var; \
|
||||||
|
} \
|
||||||
|
Type Name
|
||||||
|
|
||||||
|
#endif // CommonInclude_h__
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
#define DESIGNER_SCENE_H
|
#define DESIGNER_SCENE_H
|
||||||
|
|
||||||
#include <QGraphicsScene>
|
#include <QGraphicsScene>
|
||||||
|
#include "graphicsItem/graphicsBaseItem.h"
|
||||||
|
|
||||||
class GraphicsItemGroup;
|
class GraphicsItemGroup;
|
||||||
|
|
||||||
|
|
@ -22,7 +23,7 @@ public:
|
||||||
void destroyGroup();
|
void destroyGroup();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void signalAddItem(QGraphicsItem*);
|
void signalAddItem(GraphicsBaseItem*);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void drawBackground(QPainter*, const QRectF&) override;
|
void drawBackground(QPainter*, const QRectF&) override;
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,14 @@
|
||||||
#ifndef GRAPHICSBUSSECTIONITEM_H
|
#ifndef GRAPHICSBUSSECTIONITEM_H
|
||||||
#define GRAPHICSBUSSECTIONITEM_H
|
#define GRAPHICSBUSSECTIONITEM_H
|
||||||
|
|
||||||
|
#include "CommonInclude.h"
|
||||||
|
|
||||||
#include "graphicsItem/graphicsBaseItem.h"
|
#include "graphicsItem/graphicsBaseItem.h"
|
||||||
|
|
||||||
class GraphicsBusSectionItem : public GraphicsBaseItem
|
class GraphicsBusSectionItem : public GraphicsBaseItem
|
||||||
{
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit GraphicsBusSectionItem(const QRect &rect, QGraphicsItem *parent = nullptr);
|
explicit GraphicsBusSectionItem(const QRect &rect, QGraphicsItem *parent = nullptr);
|
||||||
virtual ~GraphicsBusSectionItem();
|
virtual ~GraphicsBusSectionItem();
|
||||||
|
|
@ -14,6 +18,9 @@ public:
|
||||||
void move(const QPointF&) override;
|
void move(const QPointF&) override;
|
||||||
void editShape(int, const QPointF&) override;
|
void editShape(int, const QPointF&) override;
|
||||||
|
|
||||||
|
public:
|
||||||
|
Q_PROPERTY_VAR(int, Int) = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual QPainterPath shape() override;
|
virtual QPainterPath shape() override;
|
||||||
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
|
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,9 @@
|
||||||
#include "DockAreaWidget.h"
|
#include "DockAreaWidget.h"
|
||||||
#include "DockWidget.h"
|
#include "DockWidget.h"
|
||||||
|
|
||||||
|
#include "QDetailsView.h"
|
||||||
|
#include "graphicsItem/graphicsBaseItem.h"
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
namespace Ui { class CMainWindow; }
|
namespace Ui { class CMainWindow; }
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
@ -41,7 +44,7 @@ private slots:
|
||||||
void onAction_zoomFit();
|
void onAction_zoomFit();
|
||||||
void onAction_createGroup();
|
void onAction_createGroup();
|
||||||
void onAction_destroyGroup();
|
void onAction_destroyGroup();
|
||||||
void onSignal_addItem(QGraphicsItem*);
|
void onSignal_addItem(GraphicsBaseItem*);
|
||||||
void onSignal_deleteItem();
|
void onSignal_deleteItem();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
@ -59,5 +62,6 @@ private:
|
||||||
|
|
||||||
DrawingPanel* m_pDrawingPanel;
|
DrawingPanel* m_pDrawingPanel;
|
||||||
GraphicElementsPanel* m_pGraphicElementsPanel;
|
GraphicElementsPanel* m_pGraphicElementsPanel;
|
||||||
|
QDetailsView* m_pPropertiesEditorView;
|
||||||
};
|
};
|
||||||
#endif // MAINWINDOW_H
|
#endif // MAINWINDOW_H
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,9 @@
|
||||||
#include "FloatingDockContainer.h"
|
#include "FloatingDockContainer.h"
|
||||||
#include "DockComponentsFactory.h"
|
#include "DockComponentsFactory.h"
|
||||||
|
|
||||||
|
#include "QDetailsView.h"
|
||||||
|
#include "util/selectorManager.h"
|
||||||
|
|
||||||
#include "drawingPanel.h"
|
#include "drawingPanel.h"
|
||||||
#include "designerScene.h"
|
#include "designerScene.h"
|
||||||
#include "graphicElementsPanel.h"
|
#include "graphicElementsPanel.h"
|
||||||
|
|
@ -67,7 +70,7 @@ void CMainWindow::initializeDockUi()
|
||||||
// Set central widget
|
// Set central widget
|
||||||
m_pDrawingPanel = new DrawingPanel();
|
m_pDrawingPanel = new DrawingPanel();
|
||||||
DesignerScene* designerScene = m_pDrawingPanel->getDesignerScene();
|
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");
|
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);
|
||||||
|
|
@ -83,11 +86,9 @@ void CMainWindow::initializeDockUi()
|
||||||
m_pDockManager->addDockWidget(DockWidgetArea::LeftDockWidgetArea, grapicElementsDockWidget);
|
m_pDockManager->addDockWidget(DockWidgetArea::LeftDockWidgetArea, grapicElementsDockWidget);
|
||||||
ui->menuView->addAction(grapicElementsDockWidget->toggleViewAction());
|
ui->menuView->addAction(grapicElementsDockWidget->toggleViewAction());
|
||||||
|
|
||||||
QTableWidget* propertiesTable = new QTableWidget();
|
m_pPropertiesEditorView = new QDetailsView();
|
||||||
propertiesTable->setColumnCount(3);
|
|
||||||
propertiesTable->setRowCount(10);
|
|
||||||
CDockWidget* propertiesDockWidget = new CDockWidget(QString::fromWCharArray(L"属性编辑器"));
|
CDockWidget* propertiesDockWidget = new CDockWidget(QString::fromWCharArray(L"属性编辑器"));
|
||||||
propertiesDockWidget->setWidget(propertiesTable);
|
propertiesDockWidget->setWidget(m_pPropertiesEditorView);
|
||||||
propertiesDockWidget->setMinimumSizeHintMode(CDockWidget::MinimumSizeHintFromDockWidget);
|
propertiesDockWidget->setMinimumSizeHintMode(CDockWidget::MinimumSizeHintFromDockWidget);
|
||||||
propertiesDockWidget->resize(250, 150);
|
propertiesDockWidget->resize(250, 150);
|
||||||
propertiesDockWidget->setMinimumSize(200,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)
|
if(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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue