前言
1、qobject_cast用法
功能:
- 将对象转换为 qt 原对象,向下转型
函数原型:
T qobject_cast ( QObject * object )
本方法返回object向下的转型T,如果转型不成功则返回0,如果传入的object本身就是0则返回0。
在使用时有两个限制:
1、T类型必须继承自QObject。
2、在声明时必须有Q_OBJECT宏。
应用: 多个对象的 signal 会连接到同一个 slot 时(例如多个Button可能会connect到一个slot函数onClick())。
用法:
QObject * obj = sender(); //返回发出信号的对象,用QObject类型接收
QPushButton *button_tmp = qobject_cast<QPushButton *>(obj); //向下转型为按钮类型
if (button_tmp != nullptr) //是否转型成功
{
...对此按钮的其他操作
}
2、尽可能少的用强制转换:
qobject_cast 安全在于:当obj不属于QPushButton 的类型或者其子类的时候不能转换
QPushButton *button_tmp = qo