元对象系统的整体结构分析(续三)
2010-12-04 18:01
218 查看
注:此文是从我的QQ空间里移出来的,因为觉的用那么多空间,blog了太累了,它发表于 2009年12月31日 13:58
-----------------------------------------------------------------------------------------------------------------------------------------------------
本文转自:我朋友的QQ空间,如需要转载,请注明本地址
元对象系统的整体结构分析(续三)
程序架构又一次重写了,这次应该会作为本次测试的最终架构模型了,又需要加班几天才行了。不过源码分析是不会变得,已经坚持了两星期,我要慢慢走向我的两年计划!
好了,现在开始今天的探索:
再次来到corelib/kernel/qmetaobject.h文件,今天研究一下QMetaEnum类,该类通过映射的关系提供了keyToValue和valueToKey的方式进行提取。
const char *QMetaEnum::key(int index) const
{
if (!mobj)
return 0;
int count = mobj->d.data[handle + 2];
int data = mobj->d.data[handle + 3];
if (index >= 0 && index < count)
return mobj->d.stringdata + mobj->d.data[data + 2*index];
return 0;
}
这是该类中一个方法的实现,可以看出来,这些方法的实现都是对QMetaObject类的简单引用,提供了一定得方法封装。这样一来,我们得到了一种新的封装方式,可以通过该类的写法完成对大型类方法的分类,以及降低耦合度。
采用同样的方法,Qt将QMetaMethod、QMetaProperty、QMetaClassInfo类从QMetaObject中分离出来,进行分类管理。
我们看到,QMetaObject类的定义和实现位置分别在qobjectdefs.h和qobject.cpp中,Qt将该类列入了object类型,而QMetaObject中分离出来的方法被放在了元对象系统当中。整个元对象系统,QMetaObject提供信号和槽的主要实现机制,而其他的几个类则是做了一些辅助的数据处理方法封装。
到这里,简单的QMetaObject类的分析完成了,大致了解了Qt在这一部分的类间关系,和一些简单的机制。至于其编码方面更深层次的东西,一时还看不明白,需要继续对Qt其他部分研究之后,再做详细分析。接下来,我们该向Qt的哪部分进军呢?明天就去再探QApplication类吧,该类提供了Qt的事件机制,从系统手中接管消息并进行派送,是如何实现的呢?让我们拭目以待。
2009年10月25日星期日 23:25
-----------------------------------------------------------------------------------------------------------------------------------------------------
本文转自:我朋友的QQ空间,如需要转载,请注明本地址
元对象系统的整体结构分析(续三)
程序架构又一次重写了,这次应该会作为本次测试的最终架构模型了,又需要加班几天才行了。不过源码分析是不会变得,已经坚持了两星期,我要慢慢走向我的两年计划!
好了,现在开始今天的探索:
再次来到corelib/kernel/qmetaobject.h文件,今天研究一下QMetaEnum类,该类通过映射的关系提供了keyToValue和valueToKey的方式进行提取。
const char *QMetaEnum::key(int index) const
{
if (!mobj)
return 0;
int count = mobj->d.data[handle + 2];
int data = mobj->d.data[handle + 3];
if (index >= 0 && index < count)
return mobj->d.stringdata + mobj->d.data[data + 2*index];
return 0;
}
这是该类中一个方法的实现,可以看出来,这些方法的实现都是对QMetaObject类的简单引用,提供了一定得方法封装。这样一来,我们得到了一种新的封装方式,可以通过该类的写法完成对大型类方法的分类,以及降低耦合度。
采用同样的方法,Qt将QMetaMethod、QMetaProperty、QMetaClassInfo类从QMetaObject中分离出来,进行分类管理。
我们看到,QMetaObject类的定义和实现位置分别在qobjectdefs.h和qobject.cpp中,Qt将该类列入了object类型,而QMetaObject中分离出来的方法被放在了元对象系统当中。整个元对象系统,QMetaObject提供信号和槽的主要实现机制,而其他的几个类则是做了一些辅助的数据处理方法封装。
到这里,简单的QMetaObject类的分析完成了,大致了解了Qt在这一部分的类间关系,和一些简单的机制。至于其编码方面更深层次的东西,一时还看不明白,需要继续对Qt其他部分研究之后,再做详细分析。接下来,我们该向Qt的哪部分进军呢?明天就去再探QApplication类吧,该类提供了Qt的事件机制,从系统手中接管消息并进行派送,是如何实现的呢?让我们拭目以待。
2009年10月25日星期日 23:25
相关文章推荐
- 元对象系统的整体结构分析(续二)
- 元对象系统的整体结构分析(续一)
- 元对象系统的整体结构分析
- 面向对象系统分析设计过程-整体思路
- U-Boot系列之三:u-boot整体结构及启动代码分析(有加入一些新东西)
- Media Player Classic - HC 源代码分析 1:整体结构
- VFS文件系统结构分析(容易理解)
- 系统集成资质 - 试题结构分析 - 2010年5月系统集成项目管理工程师
- jQuery源码分析-03构造jQuery对象-源码结构和核心函数
- 开放源代码的全文检索引擎Lucene――介绍、系统结构与源码实现分析
- 微博先锋:Twitter系统结构分析
- 系统设计之BS与CS结构分析
- 困惑:uml建模后与sql 2005之间的衔接 ——全面分析:对象数据库系统VS 关系数据库 ——转归纳载
- Linux VFS 文件系统结构分析
- [转载]垃圾收集分析(1)-Java对象结构(上)
- ffdshow 源代码分析1 : 整体结构
- ffdshow 源代码分析1 : 整体结构
- [转]Google Linux Cluster的系统结构分析(余一娇)
- Android系统层次结构及分析
- 对高访问量与庞大数据处理的网站系统结构分析