|
- // 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<Item*> RegisterManager::getItemsForRegister(const QString& registerId) const
- {
- return registerMap.value(registerId, QList<Item*>());
- }
|