WindowAppIsometricLineManager.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #pragma once
  2. #include "WindowAppItemIsometricLine.h"
  3. /// <summary>
  4. /// 管理UI界面中的等宽线线条的类
  5. /// </summary>
  6. class WindowAppItemIsometricLine;
  7. class WindowAppUiScene;
  8. class WindowAppIsometricLineManager
  9. {
  10. public:
  11. WindowAppIsometricLineManager();
  12. // 绑定Scene指针,用于添加等宽线
  13. void bindScene(WindowAppUiScene* uiScene)
  14. {
  15. this->m_pScene = uiScene;
  16. }
  17. // 根据主控件和其他控件的关系进行等宽线的判断
  18. void check(QWidget* srcWidget, QList<QWidget*> dstWidgets, STRETCH_DIRECTION dir);
  19. // 清空所有的等宽线
  20. void clear();
  21. protected:
  22. // 生成新的等宽线
  23. void newIsoLine(const UI_ISOLINE_INFO& info);
  24. // 比较高度
  25. bool checkHeight(QWidget* srcWidget, QWidget* dstWidget, STRETCH_DIRECTION dir);
  26. // 比较宽度
  27. bool checkWidth(QWidget* srcWidget, QWidget* dstWidget, STRETCH_DIRECTION dir);;
  28. // 检查是否需要绘制源控件的等宽线
  29. bool checkSourceWidget(QWidget* srcWidget, bool bSameHeight, bool bSameWidth, STRETCH_DIRECTION dir);
  30. protected:
  31. // 当前界面中的所有控件等宽线
  32. QVector<WindowAppItemIsometricLine*> m_IsoLines;
  33. // Scene的指针,用于与Scene进行交互
  34. WindowAppUiScene* m_pScene;
  35. };