栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

QT RTTI 运行时类型识别技术

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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(editor);
if(startEditor  != NULL)
{
	// 在此处写功能代码
}
Qobject::inherits()

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

// Qobject::inherits()
Qwidget *w = &s;
if(w->inherits("QListView"))
{
	// 在此处写功能代码
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1004742.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号