关于Q_PROPERTY的疑问?(急)
在进行自定义部件时,
///////// 一 /////////
class IconEditor : public QWidget
{
Q_OBJECT
private:
QColor curColor;
.
.
public:
QColor penColor() const
{ return curColor; }
void setPenColor(const QColor &newColor);
};
我这样给类添加了属性方法。
///////// 二 /////////
class IconEditor : public QWidget
{
Q_PROPERTY(QColor penColor READ penColor WRITE setPenColor);
private:
QColor curColor;
.
.
public:
QColor penColor() const
{ return curColor; }
void setPenColor(const QColor &newColor);
};
Q_PROPERTY 看文档了解是利用这个宏声明了三个自定义属性,每个属性的数据类型,读函数,写函数。
有点迷糊了,按我 一 那样做,已经跟类添加了属性方法,那为何还要弄个Q_PROPERTY来在声明了?
这样做是为了什么? 这样声明有什么好处?
求解释和相关资料。。在此感谢!
[解决办法]
属性是把已经存在的函数重新利用了。一个界面类里面用到了属性,把这个类封装成控件,就会在UI编辑器里面看到你添加的属性,和原来就存在的属性(如:geometry )一样在UI编辑器里面修改属性值。
[解决办法]
用Q_PROPERTY的目的是将这个属性注册到Qt的meta object system中(类似与Java的反射机制)。这样你也可以用比如QObject::setProperty()的方法来访问这个属性。而你如果直接调用penColor()或者setPenColor()的话,就不需要用Q_PROPERTY来注册这个属性。