1,说明
Qt的一些工具比较好用,比如ObjectController,功能类似C#的PropertyGrid,对象丢进去可以编辑,省去了不少UI的时间,^_^。 ObjectController的setObject只接受QObject类型,对其它自定义类支持不太友好。因为数据有些需要可以复制而不能继承QObject,因此做了个基类用于扩展,其中加入了Q_GADGET宏。
2,增加一个ObjectController的接口,自定义类统一继承下QGadget
void setGadget(QGadget *gadget);
QGadget* gadget() const;
3,QGadget等的定义如下
class QGadget
{
Q_GADGET
public:
Q_GADGET_METAOBJECT
public:
QGadget(){
};
virtual ~QGadget(){
}
};
自定义的Q_GADGET_METAOBJECT宏
#define Q_GADGET_METAOBJECT \
virtual const QMetaObject* metaObject() \
{
\
return &staticMetaObject; \
}
4,setGadget函数,与setObjectd没多大差异
void ObjectController::setGadget(QGadget *gadget