modelsregister.h 691 B

1234567891011121314151617181920212223242526272829303132333435
  1. #ifndef MODELSREGISTER_H
  2. #define MODELSREGISTER_H
  3. #include <QMap>
  4. #include <QObject>
  5. class BaseModel;
  6. class ModelsRegister
  7. {
  8. public:
  9. static ModelsRegister *instance()
  10. {
  11. static ModelsRegister i;
  12. return &i;
  13. }
  14. static void registerModel(BaseModel *model);
  15. static BaseModel *model(const QString &name);
  16. template <class C>
  17. static C *get(const QString &name) {
  18. C *res = dynamic_cast<C *>(instance()->m_models.value(name));
  19. Q_ASSERT(res);
  20. return res;
  21. }
  22. private:
  23. ModelsRegister() = default;
  24. ~ModelsRegister() = default;
  25. QObject m_parent;
  26. QMap<QString, BaseModel *> m_models;
  27. };
  28. #endif // MODELSREGISTER_H