QT官网上meta-object system和The Property System的文档部分总结

**

看了官网上meta-object system和The Property System的文档并作了一下笔记;

(1)meta-object system主要基于三样东西:QObject基类、 Q_OBJECT 宏声明、moc编译器;
(2)文档中说建议QObject所有子类都使用Q_OBJECT宏声明不管是否用到信号与槽或者The Property System;
(3)The Property System是基于meta-object system的;
(4)Read函数用来读取属性的值,是const function(不能改变函数中的值,只能读取),Read 函数必须返回属性的类型或者属性类型的引用;
(5)Write函数不像Read函数一样是必有的,用来设置属性的值,write函数必须返回空,并且有一个参数,参数可以是属性的类型或者属性类型的指针或者属性类型的引用;
(6)reset函数用来将属性的值返回初始值,reset函数必须没有返回值,没有参数;
(7)NOTIFY是类中的信号,每当该属性的值发生变化时,该信号就被发出,信号必须是零个或一个参数,该参数必须与属性类型相同,当属性值真正更改时才应发出通知信号;
(8)DESIGNABLE变量表明此属性是否在界面设计器的属性编辑器中出现。DESIGNABLE一般为true或false,还可以指定一个bool型的成员函数;
(9)SCRIPTABLE变量表明这个属性是否可以被一个scripting engine(脚本引擎?)操作(默认是true)。可以是true或false或bool型函数;
(10)STORED变量表明了属性是否被认为是独立存在还是依赖于其它的值而存在,它也表明是否在保存对象状态时保存此属性的值;
(11)USER变量表明属性是否可以被用户修改;
(12)CONSTANT表示属性的值是不变的;
(13)FINAL表示属性不能被派生类所重写;
(14)A MEMBER variable association is required if no READ accessor function is specified. This makes the given member variable readable and writable without the need of creating READ and WRITE accessor functions. It’s still possible to use READ or WRITE accessor functions in addition to MEMBER variable association (but not both), if you need to control the variable access.这段话没有太看懂,这里是说如果没有Read访问函数,需要MEMBER变量相互关联?
(15)Read、Write、Reset函数都是可以被集成的,也可以是虚函数,如果被多重继承,必须出现在第一个继承类中;
(16)属性的类型可以是QT支持的任意类型,也可以是用户自己定义的类型;
(17)类中的属性可以通过QObject::property() 和QObject::setProperty()两个泛型函数来读和写,并且不需要知道类的相关信息,只需要知道属性的名称;
(18)通过Write函数来改变属性的值会更快并且有利于在编译时找出bug,但是这种一般需要知道类的相关信息,我觉得文档这里想表达的是虽然QObject提供了读取和设置属性的函数,但是QT更推荐通过属性自己的Read函数和Write来进行读写;
(19)
在这里插入图片描述
文档中这一段代码主要表明,如何通过 QObject、QMetaObject、和QMetaProperties来获取一个类中属性的相关信息。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值