// registermanager.cpp #include "registermanager.h" #include "item.h" RegisterManager::RegisterManager(QObject *parent) : QObject(parent) {} void RegisterManager::bindItem(Item* item, const QString& registerId) { if (registerId.isEmpty() || !item) return; // 添加到映射表 registerMap[registerId].append(item); // 连接图元销毁信号 connect(item, &Item::destroyed, this, [this, item, registerId](){ if (registerMap.contains(registerId)) { registerMap[registerId].removeAll(item); if (registerMap[registerId].isEmpty()) { registerMap.remove(registerId); } } }); } void RegisterManager::updateRegisterValue(const QString& registerId, quint16 value) { if (!registerMap.contains(registerId)) return; // 更新所有绑定该寄存器的图元 for (Item* item : registerMap[registerId]) { item->setRegisterValue(value); item->update(); // 刷新显示 } } QStringList RegisterManager::getAllRegisteredRegisters() const { return registerMap.keys(); } QList RegisterManager::getItemsForRegister(const QString& registerId) const { return registerMap.value(registerId, QList()); }