qobject_cast
来源:互联网 发布:手机屏幕跑出蜘蛛软件 编辑:程序博客网 时间:2024/06/11 05:34
1、四个概念
向上转型:子类转换为父类,使用 dynamic_cast<type_id>(expression) ,这种转换相对来说比较安全不会有数据的丢失;
向下转型:父类转换为子类,可以使用强制转换,这种转换时不安全的,会导致数据的丢失,原因是父类的指针或者引用的内存中可能不包含子类的成员的内存。
动态转换:dynamic_cast<type_id>(expression),表示的是将 expression 转换为 type_id 类型数据,一般是子类的指针或者引用转换为父类的指针或者引用;
静态转换:static_cast<type_id>(expression),表示的是将 expression 转换为 type_id 类型数据,常用用于数值数据类型的转换
2、函数原型及限制
函数原型:
T qobject_cast ( QObject * object )函数返回 object 向下的转型 T ,如果转型不成功则返回 0 ,如果传入的 object 本身就是 0 则返回 0 。
在使用时有两个限制:
T类型必须继承自 QObject 。
在声明时必须有 Q_OBJECT 宏。
3、使用场景
使用场景:
当某一个Object emit 一个 signal的时候,它就是一个 sender , 系统会记录下当前是谁 emit 出这个 signal 的,所以在对应的slot 里就可以通过 sender() 得到当前是谁 invoke 了该 slot 。
有可能多个 Object 的 signal 会连接到同一个 signal (例如多个Button可能会connect到一个slot函数onClick()),
因此这是就 需要判断到底是哪个 Object emit 了这个 signal ,根据sender 的不同来进行不同的处理.
在槽函数中:
QObject* obj = sender(); // 返回发出信号的对象,用QObject类型接收QPushButton*button_tmp = qobject_cast<QPushButton *>(obj); // 向下转型为按钮类型
- qobject_cast
- qobject_cast
- qobject_cast用法
- qobject_cast总结
- qobject_cast用法
- qobject_cast用法
- qobject_cast用法
- qobject_cast用法
- qobject_cast--Qt的dynamic_cast
- qobject_cast 的一点感悟
- Qt-qobject_cast用法
- qt qobject_cast用法
- Qt qobject_cast 函数用法
- qobject_cast<QPushButton *>(sender())用法
- Qt|qobject_cast用法
- qobject_cast用法总结
- Qt qobject_cast用法 向下转型
- qobject_cast<QPushButton *>( sender() ) 用法介绍
- MySQL学习笔记-数据类型与操作数据表
- jQuery动态添加li标签并添加属性和绑定事件
- 【oracle】input
- awk用法总结
- 【js】JavaScript替换字符串中的空格
- qobject_cast
- 第十三周算法分析与设计:Kill Process
- 面试:----Spring MVC 文件上传下载
- springmvc无法跳转到首页controller
- LeetCoder 22. Generate Parentheses
- 分水岭分割方法
- 使用动画实现10-0的倒计时
- 布隆过滤器 (Bloom Filter) 详解
- CString