QT学习记录(六)类对象属性

类对象属性用来描述类对象的一些信息和当前的状态。类对象属性可以由类的编写者在编写类的时候定义,也可以由类的使用者在使用对象的时候定义。

由类的编写者定义

在这里插入图片描述
QPROPERTY()宏就是用来定义一个对象属性。
以第二行属性举例

QPROPERTY(bool enabled READ isEnabled WRITE setEnabled)

其中
bool是属性的类型。
enabled是属性的名字。
READ表示这个属性可读。
isEnabled表示当用户要读这个属性的时候,程序会执行isEnabled函数,并将这个函数的返回值返回给用户。
WRITE表示这个对象属性可写。
setEnabled表示当用户要写这个属性的时候,程序会执行setEnabled函数。

对象属性的使用

QMyWidget* myWidget = new QMyWidget();
bool enabled = myWidget->property("enabled");
enalbed=!enabled;
myWidget->setProperty("enabled",enabled);

用户定义属性

其实用户调用setProperty的时候,如果这个类没有这个属性,程序会动态地为这个类生成这个 属性。这个属性的类型 时Qsting。当要读这个属性的值的时候,可以用toBool,toInt等方法转化为想要想要的属性。
在这里插入图片描述

属性的其他设置选项

在这里插入图片描述

类附加信息

在这里插入图片描述
Q_CLASSINFO(key,value)就是用来添加一些关于这个类基本 信息的一些描述。
使用的时候,用这个类的meatObject对象的classinfo(int)方法获取。name就是信息的名,value就是信息的值。

demo

在这里插入图片描述
MEMBER是用来绑定类的某个成员的。
NOTIFY的含义是当这个属性发生改变时,发送信号。但在实践中发现这样做并不会发送信号。也就是这样写和下面写法 是等价的

Q_PROPERTY(unsigned age READ age WRITE setAge)

要想实现属性被改变时发送信息,就在setAge那里自己手动emit信号。
不过,下面这样情况,当属性发生改变 时会自动发信号。

Q_PROPERTY(QString mask MEMBER m_mask NOTIFY maskChanged)

使用 MEMBER 注册后,当 mask 发生改变,将会发出 maskChanged 信号

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值