当前位置: 代码迷 >> QT开发 >> 关于Q_PROPERTY的疑问?(急)解决方案
  详细解决方案

关于Q_PROPERTY的疑问?(急)解决方案

热度:86   发布时间:2016-04-25 05:03:02.0
关于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来注册这个属性。
  相关解决方案