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

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真的实在是太酷了!!

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