#pragma once #include "Common.h" #include "WindowAppUiScene.h" class WindowAppUiNavView; class WindowAppUiFrame; class WindowAppUiView : public QGraphicsView { Q_OBJECT public: WindowAppUiView(QWidget *parent); ~WindowAppUiView(); // 初始化 void init(const QString& strTitle, WindowAppUiNavView* navView, WindowAppUiFrame* parentFrame, ObjectController* objectController ); // 获取本View对应的Scene指针 WindowAppUiScene* uiScene() { return m_pUiScene; } //// 更新用户设定的尺寸 //void updateUiSize(int nWidth, int nHeight); //// dll中的控件同步消息 //void controlSync(QWidget* pWidget, UI_SYNC_MSG msg); // 删除所有控件 // 序列化 friend QDataStream& operator<<(QDataStream& out, WindowAppUiView* pView); // 反序列化 friend QDataStream& operator>>(QDataStream& in, WindowAppUiView* pView); // 本UI页面的名称 QString m_strPageName; // 背景中对齐方格的尺寸 int m_nGridSize; protected slots: // 绘制界面背景 void drawBackground(QPainter* painter, const QRectF& rect) override; // 当控件拖动时 void dropEvent(QDropEvent* event) override; //// 当控件正在拖动过程中 //void dragEnterEvent(QDragEnterEvent* event) override; // 拖拽动作处理 void dragMoveEvent(QDragMoveEvent* event) override; //========================================================= // 用于绘制橡皮筋区域 void mousePressEvent(QMouseEvent*); void mouseMoveEvent(QMouseEvent*); void mouseReleaseEvent(QMouseEvent*); //// 过滤子控件消息 //bool eventFilter(QObject* object, QEvent* event) override; // 尺寸改变后,同步调整Scene的尺寸 void resizeEvent(QResizeEvent* resizeEvent) override; signals: // 用于和缩略图同步的信号 void navigatorViewRequired(bool required, QTransform transform); protected: // 初始化方格背景 void initBkImage(); protected: // 绘图的场景类 WindowAppUiScene* m_pUiScene; // 黑白方格背景图 QPixmap* m_pBkImage; QRubberBand* m_pRubberBand; QPoint m_tmpPoint; // 加入了本View归属的UiFrame(主要用于反序列化) WindowAppUiFrame* m_parentFrame; };