Q_PROPERTY(Type
Name READ Get##
Name MEMBER m_##
Name USER
true) \
public: \
Type Get##
Name()
const {
return m_##
Name; } \
template <class T> \
typename std::enable_if_t<std::is_same_v<T, QString> || \
std::is_same_v<T, QStringList> || \
std::is_same_v<T, QDateTime> || \
std::is_same_v<T, QVariantMap> || \
std::is_same_v<T, QVariantList>,void> \
set##
Name(
const T& value) { m_##
Name = value; } \
template <class T> \
typename std::enable_if_t<!std::is_same_v<T, QString> && \
!std::is_same_v<T, QStringList> && \
!std::is_same_v<T, QDateTime> && \
!std::is_same_v<T, QVariantMap> && \
!std::is_same_v<T, QVariantList>,void> \
set##
Name(T value) { m_##
Name = value; } \
private: \