Qt中Q_PROPERTY定义属性以及属性的使用
2014-04-05 11:58
357 查看
[cpp] view
plaincopy
Q_PROPERTY(type name
READ getFunction //属性名
[WRITE setFunction] //读函数
[RESET resetFunction]
[NOTIFY notifySignal]
[DESIGNABLE bool]
[SCRIPTABLE bool]
[STORED bool]
[USER bool]
[CONSTANT]
[FINAL])
其实不知道这个定义中属性name是干什么的,网上搜的都说是注册到元对象系统中,使用setProperty能够直接访问name,然后通常在类的私有成员里再定义一个m_name,用getFunction读m_name,用setFunction设置m_name,那这样子跟name有什么关系。
我是这样理解的,Q_PROPERTY只是一个声明,与name相关的是get/set这组函数,name虽然能在designer中直接使用,但还是通过get/set来实现的,其实name的值就是读函数get的返回值,不知道这样理解对不对,暂时这么理解,回头整理好了思路或者有更好的想法再来完善
上面说的类中定义的一个数据成员m_name,其实这个变量跟Q_PROPERTY定义的name没什么关系,name的值就是你read函数中的值,如果你在read函数关联了变量m_name,当然就name就与m_name有关系,如果没关联,当然也就没关系
在学习的过程中,一直找不到notify这个signal是在哪里发射的,学习了很久才发现自己一直都被绕进去了,现在终于想通了,这个signal的发射也是手动添加的,一般来说是在setFunction中发射的。
原来,getFunction/setFunction/notifySignal都是本来已经存在的东西也就是说是你自己在类里边定义的东西,Q_PROPERTY只是将他们注册到元对象系统中,并且起了个名字叫name,使之能够使用元对象系统操作name,包括在designer中,qml中,都可以直接用name这个属性,但是在C++中的读写只能使用get/set了
plaincopy
Q_PROPERTY(type name
READ getFunction //属性名
[WRITE setFunction] //读函数
[RESET resetFunction]
[NOTIFY notifySignal]
[DESIGNABLE bool]
[SCRIPTABLE bool]
[STORED bool]
[USER bool]
[CONSTANT]
[FINAL])
其实不知道这个定义中属性name是干什么的,网上搜的都说是注册到元对象系统中,使用setProperty能够直接访问name,然后通常在类的私有成员里再定义一个m_name,用getFunction读m_name,用setFunction设置m_name,那这样子跟name有什么关系。
我是这样理解的,Q_PROPERTY只是一个声明,与name相关的是get/set这组函数,name虽然能在designer中直接使用,但还是通过get/set来实现的,其实name的值就是读函数get的返回值,不知道这样理解对不对,暂时这么理解,回头整理好了思路或者有更好的想法再来完善
上面说的类中定义的一个数据成员m_name,其实这个变量跟Q_PROPERTY定义的name没什么关系,name的值就是你read函数中的值,如果你在read函数关联了变量m_name,当然就name就与m_name有关系,如果没关联,当然也就没关系
在学习的过程中,一直找不到notify这个signal是在哪里发射的,学习了很久才发现自己一直都被绕进去了,现在终于想通了,这个signal的发射也是手动添加的,一般来说是在setFunction中发射的。
原来,getFunction/setFunction/notifySignal都是本来已经存在的东西也就是说是你自己在类里边定义的东西,Q_PROPERTY只是将他们注册到元对象系统中,并且起了个名字叫name,使之能够使用元对象系统操作name,包括在designer中,qml中,都可以直接用name这个属性,但是在C++中的读写只能使用get/set了
相关文章推荐
- Qt属性表控件的使用 QtTreePropertyBrowser
- Spring学习笔记 关于Bean定义的重用-使用abstract以及parent标签属性
- 使用js创建div、添加子div并给div设置在css中定义的class选择属性以及设置style属性
- Qt属性表控件的使用 QtTreePropertyBrowser
- Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
- Qt属性表控件的使用 QtTreePropertyBrowser
- Qt属性表控件的使用 QtTreePropertyBrowser
- 使用defineProperty定义属性的构造函数在调试过程中打印的一些小细节
- Spring学习笔记 关于Bean定义的重用-使用abstract以及parent标签属性
- 自定义View以及View的属性的使用(重点,xml中定义属性的值),包括Bitmap存为jpg样式(可以模仿修改照片不喜欢的地方)
- Java学习笔记十四:如何定义Java中的类以及使用对象的属性
- 使用Object.defineProperty重新定义属性时需要注意的一点
- WPF 使用依赖属性(DependencyProperty) 定义用户控件中的Image Source属性
- Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
- QT读写ini配置文件以及绝对路径的使用
- QT布局以及使用QSS
- QtTreePropertyBrowser控件的使用
- android使用自己定义属性AttributeSet
- strToMember,strToTuple, strToSet, strToValue以及一些成员属性, 以及其使用
- 使用opencv2在qt界面上进行摄像头采集以及简单的拍照功能