我想实现我自己的简单属性系统(C ++),类似于Qt的Q_PROPERTY提供的系统。问题是Qt的属性不适用于内部宏,我试图用来在属性上添加一些额外的功能。目的是能够通过属性字符串名称表示和常规方法声明属性并自动获取访问权限:
MY_PROPERTY(QString, Name)
...
getObject()->setProperty("Name", "John");
...
myObject->setName("John");
QString name = myObject->getName();
我想用一行添加所有需要的功能但是下面的代码不起作用,因为MOC不扩展宏:
#define MY_PROPERTY(type, name)\
Q_PROPERTY(type name READ name WRITE change##name)\
\
void set##name(type param)\
{\
m_##name = param;\
DO SOMETHING
}\
请就此主题提供任何好的书籍/文章。
答案 0 :(得分:0)
大多数(> 95%)条件,Qt Propery系统就足够了,如果你真的想在设置或获取时在自己的属性上添加一些东西,你可以使用Qt信号/插槽系统来做到这一点。
如果你最后还想拥有自己的Property System,我认为最好的参考是Qt源代码,不是吗?