diff --git a/src/event/EventCenter.cpp b/src/event/EventCenter.cpp new file mode 100644 index 0000000..c09fd6d --- /dev/null +++ b/src/event/EventCenter.cpp @@ -0,0 +1,19 @@ +// +// Created by Krad on 2021/10/11. +// + +#include "EventCenter.h" + +void EventCenter::triggerEvent(GUIEvents event, QObject *sender, QObject *data) { + switch (event) { + #define ADD_EVENT_VALUE(val)\ + case GUIEvents:: val :\ + {\ + emit val(sender,data);\ + } + ADD_EVENT() + #undef ADD_EVENT_VALUE + default: + break; + } +} diff --git a/src/event/EventCenter.h b/src/event/EventCenter.h new file mode 100644 index 0000000..d69822c --- /dev/null +++ b/src/event/EventCenter.h @@ -0,0 +1,39 @@ +// +// Created by Krad on 2021/10/11. +// + +#ifndef GUI_EVENTCENTER_H +#define GUI_EVENTCENTER_H + +#include + +#define ADD_EVENT()\ +ADD_EVENT_VALUE(PatientSelected)\ +ADD_EVENT_VALUE(GUIErrorRaise) + +enum GUIEvents{ +#define ADD_EVENT_VALUE(val) val, + ADD_EVENT() +#undef ADD_EVENT_VALUE +}; + + + +class EventCenter:public QObject { + Q_OBJECT +public: + static EventCenter* Default(){ + static EventCenter instance; + return &instance; + } + void triggerEvent(GUIEvents event,QObject* sender,QObject* data); + signals: + #define ADD_EVENT_VALUE(val)\ + void val(QObject* sender,QObject* data); + ADD_EVENT() + #undef ADD_EVENT_VALUE + +}; + + +#endif //GUI_EVENTCENTER_H