QObject提供了QMetaObject元类信息(相当于RTTI和反射),信号与连接,父子关系,调试信息,属性,事件,继承关系,窗口类型,线程属性,时间器,对象名称,国际化

元类信息(相当于RTTI和反射),信号与连接,父子关系,调试信息,属性,事件,继承关系,窗口类型,线程属性,时间器,对象名称,国际化
其中元类又提供了:classInfo,className,构造函数,多重祖先元类,method, property, Enumerator, Signal, Slot等等

http://doc.qt.io/qt-5/qobject.html

http://doc.qt.io/qt-5/qmetaobject.html

我感觉Qt的出现,除了提供GUI以外,主要就是提供了QObject和QString,大大缓解了C++的不足,具体可以参考:http://www.cnblogs.com/findumars/p/6339320.html

没有QObject,各个类就失去了统一的控制,要自己写很多功能才能提供一些基本的功能(比如RTTI)。

没有QString,那简直就根本无法外部数据打交道,或者打交道的时候痛苦的要死,要使用各种孤立和非常弱、以char为基础的字符函数。有了std::string以后,这种情况有了一定的缓解,但是std::string怎能与QString的皓月之光相比较呢?

没有这两个类,C++依然只是一个高级和非常复杂的玩具,用在生产里虽然也算稳定可靠,但还是非常不方便。

更别说,跨平台的时候,难道还要把这么多功能重写一遍?

相比之下,无论你是否指定祖先类,Delphi自动替你继承了TObject,这样各种基础和必须的功能就有了强有力的保障。而Delphi里的String根本不是类,而是别出心裁的从编译器级别直接提供,程序员根本无从见到它的源码和构造方式,可见的这个类的重要性。

至于C++其它不足,可以参考《C++的爱恋与迷思》和《C++批判》和《C++的演化》,这几本书我都还没看过,但是以后可以把书中提到的缺点和Qt提供的功能体系对照着看,会更有收获。

我感觉C++总体上还是属于学院派,提供了那么多华而不实的东西,烦不胜烦。而Qt属于工程派,上来就是简洁、紧凑、实用的功能。然而两者又不冲突,因为C++本来就是一个包罗万象的超集嘛!

Qt真的实在是太酷了!!

时间: 2024-10-26 17:15:55

QObject提供了QMetaObject元类信息(相当于RTTI和反射),信号与连接,父子关系,调试信息,属性,事件,继承关系,窗口类型,线程属性,时间器,对象名称,国际化的相关文章

Python第二十一课(反射/元类)

Python第二十一课(反射/元类)    >>>思维导图>>>中二青年 反射reflect 什么是反射, 其实是反省,自省的意思 反射指的是一个对象应该具备,可以检测,修改,增加自身属性的能力 反射就是通过字符串操作属性 涉及的四个函数,这四个函数就是普通的内置函数 没有双下划綫,与print等等没有区别 hasattr getattr setattr delattr p = Person("jack",18,"man") #

Python——五分钟理解元类(metaclasses)

“元类的魔幻变化比 99% 的用户所担心的更多,当你搞不懂是否真的需要用它的时候,就是不需要.” —Tim Peters 本文源于在 PyCon UK 2008 上的一个快速演讲. 元类被称为 Python 中的“深奥的巫术”.尽管你需要用到它的地方极少(除非你基于zope 编程),可事实上它的基础理论其实令人惊讶地易懂. 一切皆对象 一切皆对象 一切都有类型 “class”和“type”之间本质上并无不同 类也是对象 它们的类型是 type 以前,术语 type 用于内置类型,而术语 clas

8.python之面相对象part.9(初识元类part.1)

初步认识元类 #本篇文章介绍的元类,以及type以python3以上版本为准. 一.关于元类的前言. 在python中,一切皆对象,当然,类也是一个对象. class c1: pass obj1 = c1() 从上面这段例子可以看到,obj1是c1这个类创建出来的一个对象,obj1是由c1去产生的,如果按照前面的理论来理解,类也是一个对象,那么c1是由谁创建出来的呢? #type函数可以查看类型,也可以用来查看对象的类,二者是一样的 print(type(obj1)) # 输出:<class '

(转)元类metaclass

阅读目录 一 前言 二 什么是元类 三 class关键字创建类的流程分析 五 自定义元类控制类OldboyTeacher的创建 六 自定义元类控制类OldboyTeacher的调用 六 再看属性查找 七 练习题 一 前言 元类属于python面向对象编程的深层魔法,99%的人都不得要领,一些自以为搞明白元类的人其实也只是自圆其说.点到为止,从对元类的控制上来看就破绽百出.逻辑混乱,今天我就来带大家来深度了解python元类的来龙去脉. 笔者深入浅出的背后是对技术一日复一日的执念,希望可以大家可以

第八章python元类编程

1.property动态属性 一般对象中的属性使用单下划线或双下划线开头的都是伪私有类型,对于单下划线开头的属性(表示为protected类型)直接可以通过对象访问,而双下滑线开头的属性(表示private类型)必须使用对象.__类名__私有属性名即可访问 1 class Test: 2 def __init__(self): 3 self.__t1 = "t1" 4 self._t2 = "t2" 5 6 7 test = Test() 8 print(test.

Windows程序调试系列: 使用VC++生成调试信息 转

Windows程序调试系列: 使用VC++生成调试信息 ZhangTao,[email protected], 译自 “Generating debug information with Visual C++”,Oleg Starodumov 出处: http://www.cnblogs.com/itrust/archive/2006/08/17/479603.aspx 引子 当我们使用调试器来调试程序时,我们希望能够单步调试到源代码中,在代码中设置断点,观察变量的值(包括用户自定义的复杂类型的

利用 Serial Over Lan(SOL)搭建 XEN 的调试信息输出环境

修改XEN的源码实现额外的功能,需要有一个调试环境来得到XEN的调试信息(有关源码编译并安装 XEN 请阅读我以前的博文:在CentOS下源码安装 Xen并搭建Windows虚拟机),这里有一篇很好的搭建方法:Xen Serial Console,可是光阅读它还不够,中间还会遇到许多问题,本博文介绍一下环境搭建的经过,以及遇到的问题的解决办法,希望对大家有用. 得到 XEN 的 Debug String 需要靠串口(Serial Port)来接收并输出,除了使用 RS232 线缆连接两台机器之外

VS2008中编译通过,但调试时出现“未使用调试信息生成二进制文件”的问题

.只要是“建立项目的时候不应建立空项目,而应当建立一个“win32控制台应用程序”.这样确实可以解决问题.只要你选择的是这个"win32控制台应用程序"则在附加选项里面选不选上“空项目”都可以. 其实问题在于,在空项目中不生成调试文件pdb,所以无法调试. 要让项目生成pdb文件,需要更改: 项目属性,configuration properties->linker->Generate Debug Info 从 no 改为 yes 但这样还是不够的,还需要更改: 项目属性,

Django—— ORM查询(sql优化)优化了解,Django(元信息)元类建索引

Django(元信息)元类建索引 索引:索引的一个主要目的就是加快检索表中数据,索引是经过某种算法优化过的,因而查找次数要少的多.可见,索引是用来定位的. class Book(models.Model) name = models.CharField(max_length=64) class Meta: # 自定义表名 db_table = 'table_name' # 联合索引: 索引的一个主要目的就是加快检索表中数据 index_together = ('tag1', 'tag2') #