Advertisement
Guest User

Untitled

a guest
Jun 20th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.88 KB | None | 0 0
  1.  
  2. class QtQObjectTemplateWorkaround: public QObject
  3. {
  4.     Q_OBJECT
  5. signals:
  6.     void valueChanged();
  7. };
  8.  
  9. template<typename T>
  10. class BoilerplateHolder: public QtQObjectTemplateWorkaround {
  11. public:
  12.    BoilerplateHolder(T&& value): m_value{std::forward<T>(value)} {}
  13.    BoilerplateHolder(const BoilerplateHolder<T>& bh){ m_value = bh.m_value; }
  14.    void operator =(const BoilerplateHolder<T>& bh) { m_value = bh.m_value;}
  15.    void operator =(T&& value) { m_value = std::forward<T>(value); valueChanged(); }
  16.    operator T() const { return m_value; }
  17. private:
  18.    T m_value;
  19. };
  20.  
  21. class Something: public QObject
  22. {
  23.     Q_OBJECT
  24.     Q_PROPERTY(BoilerplateHolder<int> minPowerLevel MEMBER m_minPowerLevel)
  25.     Q_PROPERTY(BoilerplateHolder<int> maxPowerLevel MEMBER m_maxPowerLevel)
  26. private:
  27.     BoilerplateHolder<int> m_minPowerLevel{0};
  28.     BoilerplateHolder<int> m_maxPowerLevel{0};
  29. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement