完成 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
|
||||
|
||||
#include <QGraphicsScene>
|
||||
#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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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<QObject*>(item));
|
||||
QUndoCommand* addItemCommand = new AddItemCommand(item, item->scene());
|
||||
m_pUndoStack->push(addItemCommand);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue