首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

关于Q_PROPERTY的疑义?(急)

2013-07-01 
关于Q_PROPERTY的疑问?(急)在进行自定义部件时,/////////一/////////class IconEditor : public QWidget{Q

关于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来注册这个属性。

热点排行