QT 属性系统
来源:互联网 发布:思纬网络 编辑:程序博客网 时间:2024/06/10 04:28
最近学习了python 的描述器,想起之前学过的Qt 的属性系统,特此过来记录一下。
Qt的属性系统需要借助元对象来实现:
Q_PROPERTY(type name
READ getFunction
[WRITE setFunction]
[RESET resetFunction]
[NOTIFY notifySignal] )
用来为对象添加属性,包括属性的名称,读、写重置接口和告知。重置一般讲属性设置为某个默认值,告知一般定义为信号,而且一般在写接口和重置接口的末尾发出该信号。
此时定义的属性,便能通过 .property() 来获取,相当于 .property() 会调用这里定义的读方法;通过 .serproperty() 来设置属性,相当于 .setProperty() 会调用写方法。类似于python 的描述器,访问时调用 __get__() 方法;改写时调用 __set__() 方法。
另外,Qt也支持动态在运行时为对象添加属性,通过 .setProperty() 方法。
注意该方法只是为该对象动态添加,相当于python 的对象命名空间中,所以只有该对象能够查询得到。
打印对象所有的方法:
int mCount = w.metaObject()->methodCount(); for(int i = 0; i < mCount; ++i) { qDebug() << QString::fromLatin1(w.metaObject()->method(i).methodSignature()); }
打印对象所有的属性(动态添加的属性无法包含其中):
int pCount = w.metaObject()->propertyCount(); for(int j = 0; j < pCount; ++j) { qDebug() << w.metaObject()->property(j).name(); qDebug() << w.property(w.metaObject()->property(j).name()); }
打印所有的类信息(通过 Q_CLASSINFO 添加的):
int infoCount = w.metaObject()->classInfoCount(); for(int i=0; i<infoCount; i++) { qDebug()<< w.metaObject()->classInfo(i).name() <<" "<< w.metaObject()->classInfo(i).value(); }
0 0
- Qt属性系统详解
- Qt属性系统详解
- Qt属性系统详解
- Qt属性系统
- qt中的属性系统
- Qt属性系统详解
- Qt属性系统
- Qt之属性系统
- QT 属性系统
- Qt属性系统详解
- Qt属性系统
- Qt 之属性系统总结
- Qt 之属性系统总结
- Qt之属性系统详解
- [Qt入门篇]5 Qt的属性系统——声明属性
- Qt 属性
- Qt属性
- Qt属性系统(Qt's Property System)及在Pyqt中的应用
- centos安装和准备工作
- 哈哈哈哈哈哈
- 大数乘法
- java中数据类型转换总结
- hadoop2.x配置
- QT 属性系统
- 浅析 JIT 即时编译技术
- 首次接触CentOS
- 使用pyinstaller封装Python代码
- 卸载centos自带的openjdk
- android Templates初步认识
- 前工程师讲解:开关电源设计-LLC电源
- 你绝对能懂的“机器学习”(四)
- 机器学习和深度学习引用量最高的20篇论文(2014-2017)