QT RTTI 运行时类型识别技术

QT RTTI 运行时类型识别技术

除了C++为我们提供的两种RTTI运算符(dynamic_cast 和 typeid)外,qt也为我们提供了两种运行时类型识别机制:
(1)qobject_cast
(2)Qobject::inherits()

qobject_cast

  • qobject_cast 与 C++ 标准库中的dynamic_cast 类似,都是一个类型转换运算符,是一个向下转换运算符

  • qobject_cast 的参数受限于ObjectType*,其中ObjectType类是QObject的派生类并且完全由moc进行处理(这需要其类定义中由Q——OBJECT宏)

  • qobject_cast 允许把一个更为常规的指针和引用转换成某种特定的类型。

// qobject_cast 
QWidget * editor =  new StartEditor;
StartEditor * startEditor = qobject_cast<StartEditor *>(editor);
if(startEditor  != NULL)
{
	// 在此处写功能代码
}

Qobject::inherits()

与qobject_cast不同,Qobject::inherits()按树接收一个char* 类型名,而不是一个表达式,这里还是直接上代码吧:

// Qobject::inherits()
Qwidget *w = &s;
if(w->inherits("QListView"))
{
	// 在此处写功能代码
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值