// LayoutData.h #pragma once #include #include #include class DiagramEditorBaseBlock; class DiagramEditorStructContainer; struct ContainerLayout { double width = 0; double height = 0; double maxUpHeight = 0; // 上间隔最大高度 double maxDownHeight = 0; // 下间隔最大高度 double startX = 0; // 容器起始X double startY = 0; // 容器起始Y double midUpY = 0; // 母线1中心Y double midDownY = 0; // 母线2中心Y QMap blockPositions; // 设备位置 }; struct RowLayout { int level = 0; double topY = 0; // 行顶部Y double height = 0; // 行高度 double width = 0; // 行宽度 QList containers; bool isTransformerRow = false; }; struct LayoutResult { QMap rows; // 各层级布局 QMap allBlockPositions; // 所有设备位置 QMap containerLayouts; // 容器布局 };