// TransformerBuilder.cpp #include "diagramEditor/transformerBuilder.h" #include "diagramEditor/hierarchyItemBuilder.h" TransformerBuilder::TransformerBuilder(EditPanel* panel) : LayoutBuilder(panel) {} LayoutBuilder::BuildResult TransformerBuilder::buildContainer(const BlockMap& blockMap) { BuildResult result = LayoutBuilder::buildContainer(blockMap); // 为变压器创建额外的层级项 for (int layerIndex = 0; layerIndex < TOTAL_LAYERS; ++layerIndex) { auto blocks = blockMap.value(layerIndex); for (auto &block : blocks) { if (block && block->getType() == TRANSFORMER_TYPE) { processTransformerBlock(block, result.bayItems, result.deviceItems); } } } return result; } QGraphicsLinearLayout* TransformerBuilder::createTransformerRowLayout() { auto layout = createRowLayout(); layout->insertStretch(0); layout->addStretch(); return layout; } HierarchyItem TransformerBuilder::buildTransformerHierarchyItem(BlockDataPtr blockData) { if (!blockData) return {}; return HierarchyItemBuilder::instance() .buildDeviceWithParent(blockData, blockData, TRANSFORMER_DEVICE_TYPE); } void TransformerBuilder::processTransformerBlock(BlockDataPtr block, QList& bayItems, QList& deviceItems) { if (!block) return; // 变压器需要bayItem吗?根据原始代码,变压器会创建bayItem auto bayItem = HierarchyItemBuilder::instance().buildBayItem(block); bayItems.append(bayItem); // 创建变压器的deviceItem auto deviceItem = buildTransformerHierarchyItem(block); deviceItems.append(deviceItem); }