Q_DISABLE_COPY(GlowEffect)
这个是禁止实现operator = ,以防止拷贝
Q_DECLARE_PRIVATE(GlowEffect)
这个是声明d_func()来方便返回 GlowEffectPrivate类成员d_ptr(可以看qglobal.h里的宏定义),这样就不用自己来进行类型转换了.
Q_D(GlowEffect);
这个相当于GlowEffectPrivate *d = d_ptr();
所以后面就能用d->radius 这样来使用GlowEffectPrivate类的东西了.
同样的
Q_Q(GlowEffect);相当于GlowEffect *q = q_func();这样就能在GlowEffectPrivate类的成员函数里使用q->xxxx来调用主类的成员了.
以上实现,是参考Qt的数据隐藏方法,凡是有私有成员(包括函数/变量)时,都定义在GlowEffectPrivate类里, 如此修改代码时,接口部分(即GlowEffect类声明)不用改变, 对应的类接口使用说明/使用到这个类头文件的其它文件也就不需要重新编译.