#pragma once /**************************** * 事件处理器的基类 * *************************/ #include "eventHandler.h" #include "propertyType/configEventData.h" #include "graphicsItem/functionModelItem/graphicsFunctionModelItem.h" #include "evetConfig/panelVisibilityEventHandler.h" #include "evetConfig/scriptEventHandler.h" #include "evetConfig/variableSetEventHandler.h" class EventExecutor { private: QVector> m_handlers; public: EventExecutor() { // 注册默认处理器 registerDefaultHandlers(); } // 注册处理器 void registerHandler(QSharedPointer handler) { m_handlers.append(handler); } // 执行事件 void execute(const EventData& event, GraphicsFunctionModelItem* item) { for (const auto& handler : m_handlers) { if (handler->canHandle(event.type)) { handler->handle(event, item); return; } } // 如果没有找到处理器,使用默认处理 qWarning() << "No handler found for event type:" << event.type; } // 获取支持的处理器名称 QStringList supportedHandlers() const { QStringList names; for (const auto& handler : m_handlers) { names.append(handler->handlerName()); } return names; } private: void registerDefaultHandlers() { registerHandler(QSharedPointer(new PanelVisibilityEventHandler())); registerHandler(QSharedPointer(new VariableSetEventHandler())); registerHandler(QSharedPointer(new ScriptEventHandler())); } };