#pragma once #include "WindowAppItemIsometricLine.h" /// /// 管理UI界面中的等宽线线条的类 /// class WindowAppItemIsometricLine; class WindowAppUiScene; class WindowAppIsometricLineManager { public: WindowAppIsometricLineManager(); // 绑定Scene指针,用于添加等宽线 void bindScene(WindowAppUiScene* uiScene) { this->m_pScene = uiScene; } // 根据主控件和其他控件的关系进行等宽线的判断 void check(QWidget* srcWidget, QList dstWidgets, STRETCH_DIRECTION dir); // 清空所有的等宽线 void clear(); protected: // 生成新的等宽线 void newIsoLine(const UI_ISOLINE_INFO& info); // 比较高度 bool checkHeight(QWidget* srcWidget, QWidget* dstWidget, STRETCH_DIRECTION dir); // 比较宽度 bool checkWidth(QWidget* srcWidget, QWidget* dstWidget, STRETCH_DIRECTION dir);; // 检查是否需要绘制源控件的等宽线 bool checkSourceWidget(QWidget* srcWidget, bool bSameHeight, bool bSameWidth, STRETCH_DIRECTION dir); protected: // 当前界面中的所有控件等宽线 QVector m_IsoLines; // Scene的指针,用于与Scene进行交互 WindowAppUiScene* m_pScene; };