#ifndef MODELSREGISTER_H #define MODELSREGISTER_H #include #include class BaseModel; class ModelsRegister { public: static ModelsRegister *instance() { static ModelsRegister i; return &i; } static void registerModel(BaseModel *model); static BaseModel *model(const QString &name); template static C *get(const QString &name) { C *res = dynamic_cast(instance()->m_models.value(name)); Q_ASSERT(res); return res; } private: ModelsRegister() = default; ~ModelsRegister() = default; QObject m_parent; QMap m_models; }; #endif // MODELSREGISTER_H