QT 杂项笔记qobject_cast

1、使用qobject_cast进行安全类型转换

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QObject *btn = new QPushButton;
    qDebug() << btn->metaObject()->className(); //查看类名

    //使用qobject进行安全类型转换,转换目标为QPushButton*类型,当btn为QPushButton类型及其子类时,才能转换成功,成功后pushBtn将指向btn
    QPushButton *pushBtn = qobject_cast<QPushButton*>(btn);
    qDebug() << pushBtn->metaObject()->className();
}

        `qobject_cast`是Qt提供的一个用于执行对象间安全的动态转换的宏。类似于C++中的`dynamic_cast`,但在使用Qt的多态类时更安全,特别是在多线程环境下。它是Qt中处理对象类型转换的推荐方式。

        `qobject_cast<QPushButton*>(btn)`:这部分代码实际上进行了类型转换,将`btn`对象转换为`QPushButton*`类型的指针。如果`btn`对象确实是`QPushButton`或其子类的实例,那么转换将成功,`pushBtn`将指向相应的`QPushButton`对象。否则,`pushBtn`将被赋值为`nullptr`,表示转换失败。

        总结:代码的作用是将`btn`对象转换为`QPushButton*`类型的指针,并将结果保存在名为`pushBtn`的变量中。如果转换成功,`pushBtn`将指向`btn`对应的`QPushButton`对象;如果转换失败,`pushBtn`将为`nullptr`。这样,我们可以通过检查`pushBtn`是否为`nullptr`来判断转换是否成功,从而安全地使用转换后的对象。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值