WindowAppPouNavView.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #include "Common.h"
  2. /// <summary>
  3. /// 用于显示Pou界面的鸟瞰图
  4. /// </summary>
  5. class WindowAppPouNavView : public QGraphicsView
  6. {
  7. Q_OBJECT
  8. public:
  9. WindowAppPouNavView(QWidget *parent = nullptr);
  10. // 绑定对应的视图
  11. void setMainView(QGraphicsView *mainView);
  12. // 设置透明度
  13. void setOpacity(qreal opacity, bool animated = true);
  14. public slots:
  15. // 刷新界面(暂未使用)
  16. void updateMainViewportRegion();
  17. private:
  18. void mousePressEvent(QMouseEvent * event) override;
  19. void mouseMoveEvent(QMouseEvent * event) override;
  20. void mouseReleaseEvent(QMouseEvent * event) override;
  21. void wheelEvent(QWheelEvent *event) override;
  22. void paintEvent(QPaintEvent *event) override;
  23. private:
  24. // 初始化界面风格
  25. void initStyle();
  26. private:
  27. bool m_mouseDown = false;
  28. QPolygon m_viewportRegion;
  29. QGraphicsView * m_mainView = nullptr;
  30. /// <summary>
  31. /// 用于辅助设定透明渐变效果的类(内部类)
  32. /// </summary>
  33. class OpacityHelper : QObject
  34. {
  35. public:
  36. OpacityHelper(QWidget* parent);
  37. void setOpacity(qreal opacity, bool animated = true);
  38. protected:
  39. // 窗体透明效果
  40. QGraphicsOpacityEffect* m_opacityFx;
  41. // 透明的动画效果
  42. QPropertyAnimation* m_opacityAnimation;
  43. };
  44. OpacityHelper* m_opacityHelper = nullptr;
  45. };