之前使用属性表控件,都要使用类似于MAP的方式来进行数据的处理。
今天看到了Q_PROPERTY这个宏,利用它可以在自己的类里注册元属性,也是QT里大量使用的一种方式。
在属性表源码中有一个用于属性表控制的类--ObjectController。他可以将当前的类的所有元属性,包括基类,都用属性表
方式表示出来,而且Q_PROPERTY定义的属性可以响应数值的修改,就类似于信号与槽的机制,非常方便。
需要注意:有时候可能不想显示基类的元属性。需要把ObjectController.cpp文件中的函数稍作修改。
void ObjectControllerPrivate::addClassProperties(const QMetaObject* metaObject)
{
if (!metaObject)
return;
//这里是迭代处理上级类的元属性。
//addClassProperties(metaObject->superClass());
。。。。
}
Q_PROPERTY
参考文献