change_code/3rd/ElaWidgetTools/include/ElaProperty.h

169 lines
6.9 KiB
C++

#ifndef ELAFRAMEWORK_ELAWIDGETTOOLS_ELAPROPERTY_H_
#define ELAFRAMEWORK_ELAWIDGETTOOLS_ELAPROPERTY_H_
#include <QtCore/qglobal.h>
#ifdef ELAWIDGETTOOLS_LIBRARY
#define ELA_EXPORT Q_DECL_EXPORT
#else
#define ELA_EXPORT Q_DECL_IMPORT
#endif
#define Q_PROPERTY_CREATE(TYPE, M) \
Q_PROPERTY(TYPE p##M MEMBER _p##M NOTIFY p##M##Changed) \
public: \
Q_SIGNAL void p##M##Changed(); \
void set##M(TYPE M) \
{ \
_p##M = std::move(M); \
Q_EMIT p##M##Changed(); \
} \
TYPE get##M() const \
{ \
return _p##M; \
} \
\
private: \
TYPE _p##M;
#define Q_PROPERTY_REF_CREATE(TYPE, M) \
Q_PROPERTY(TYPE p##M MEMBER _p##M NOTIFY p##M##Changed) \
public: \
Q_SIGNAL void p##M##Changed(); \
void set##M(const TYPE& M) \
{ \
_p##M = M; \
Q_EMIT p##M##Changed(); \
} \
const TYPE& get##M() const \
{ \
return _p##M; \
} \
\
private: \
TYPE _p##M;
#define Q_PROPERTY_CREATE_Q_H(TYPE, M) \
Q_PROPERTY(TYPE p##M READ get##M WRITE set##M NOTIFY p##M##Changed) \
public: \
Q_SIGNAL void p##M##Changed(); \
void set##M(TYPE M); \
TYPE get##M() const;
#define Q_PROPERTY_REF_CREATE_Q_H(TYPE, M) \
Q_PROPERTY(TYPE p##M READ get##M WRITE set##M NOTIFY p##M##Changed) \
public: \
Q_SIGNAL void p##M##Changed(); \
void set##M(const TYPE& M); \
const TYPE& get##M() const;
#define Q_PRIVATE_CREATE_Q_H(TYPE, M) \
public: \
void set##M(TYPE M); \
TYPE get##M() const;
#define Q_PRIVATE_REF_CREATE_Q_H(TYPE, M) \
public: \
void set##M(const TYPE& M); \
const TYPE& get##M() const;
#define Q_PROPERTY_CREATE_Q_CPP(CLASS, TYPE, M) \
void CLASS::set##M(TYPE M) \
{ \
Q_D(CLASS); \
d->_p##M = std::move(M); \
Q_EMIT p##M##Changed(); \
} \
TYPE CLASS::get##M() const \
{ \
return d_ptr->_p##M; \
}
#define Q_PROPERTY_REF_CREATE_Q_CPP(CLASS, TYPE, M) \
void CLASS::set##M(const TYPE& M) \
{ \
Q_D(CLASS); \
d->_p##M = M; \
Q_EMIT p##M##Changed(); \
} \
const TYPE& CLASS::get##M() const \
{ \
return d_ptr->_p##M; \
}
#define Q_PRIVATE_CREATE_Q_CPP(CLASS, TYPE, M) \
void CLASS::set##M(TYPE M) \
{ \
Q_D(CLASS); \
d->_p##M = std::move(M); \
} \
TYPE CLASS::get##M() const \
{ \
return d_ptr->_p##M; \
}
#define Q_PRIVATE_REF_CREATE_Q_CPP(CLASS, TYPE, M) \
void CLASS::set##M(const TYPE& M) \
{ \
Q_D(CLASS); \
d->_p##M = M; \
} \
const TYPE& CLASS::get##M() const \
{ \
return d_ptr->_p##M; \
}
#define Q_PROPERTY_CREATE_D(TYPE, M) \
private: \
TYPE _p##M;
#define Q_PRIVATE_CREATE_D(TYPE, M) \
private: \
TYPE _p##M;
#define Q_PRIVATE_CREATE(TYPE, M) \
public: \
void set##M(TYPE M) \
{ \
_p##M = std::move(M); \
} \
TYPE get##M() const \
{ \
return _p##M; \
} \
\
private: \
TYPE _p##M;
#define Q_PRIVATE_REF_CREATE(TYPE, M) \
public: \
void set##M(const TYPE& M) \
{ \
_p##M = M; \
} \
const TYPE& get##M() const \
{ \
return _p##M; \
} \
\
private: \
TYPE _p##M;
#define Q_Q_CREATE(CLASS) \
protected: \
explicit CLASS(CLASS##Private& dd, CLASS* parent = nullptr); \
QScopedPointer<CLASS##Private> d_ptr; \
\
private: \
Q_DISABLE_COPY(CLASS) \
Q_DECLARE_PRIVATE(CLASS);
#define Q_D_CREATE(CLASS) \
protected: \
CLASS* q_ptr; \
\
private: \
Q_DECLARE_PUBLIC(CLASS);
#endif // ELAFRAMEWORK_ELAWIDGETTOOLS_ELAPROPERTY_H_