#include <QApplication>
#include <QtDebug>
#define SP_VALUE(type,name) \
Q_PROPERTY(type name READ get_##name) \
inline type get_##name() { return name; };\
type name
class Value :public QObject{ //参数类
Q_OBJECT
public:
Value(int x,int y):x(x),y(y){}
int x;
int y;
};
Q_DECLARE_METATYPE(Value) //声明Value 为元类型
Q_DECLARE_METATYPE(Value*) //声明Value*为元类型
class Resource: public QObject{ //资源类
Q_OBJECT
public:
SP_VALUE(Value*,value)=new Value(1,2); //通过宏展开生成get函数并创建变量。
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Resource res;
qDebug()<<res.get_value()->x; //调用宏生成的get方法打印X
qDebug()<<res.property("value").value<Value*>()->y; //通过属性系统访问value打印Y
qDebug()<<res.metaObject()->propertyCount(); //可通过属性系统-
return a.exec();
}