QT元对象系统简介

 QT元对象系统
    qt的主要成就之一就是使用了一种机制对C++进行了扩展,而且使用这种机制建立了独立的软件组件,这些组件能够绑定在一块儿,但任何一个组件对于它所要链接的组件的状况一无所知,这种机制就称为元对象系统,它提供了关键的两个技术,信号和槽,以及内省。
     内省功能对于实现信号和槽是必须的,而且允许开发人员在运行时获取有关QObject子类的“元信息”,包括一个含有对象的类名以及它所支持的信号和槽的列表,这一机制也支持属性和文本翻译,而且为Qtscript模块奠基了基础,标准的C++没有对qt的的元对象系统锁须要的动态元信息提供支持,qt是经过一个独立的moc工具解决这个问题,moc解析Q_OBJECT类的定义而且经过c++函数来提供可供使用的信息,犹豫moc使用纯c++来实现全部功能,因此qt的元对象系统能够在任意c++编译器上工做。
   这一机制是这样工做的:
       Q_OBJECT宏声明了每个QObject子类中必须实现的一些内省函数:metaobject,tr(),qt_metacall(),以及一些其它函数。Qt的moc工具生成了用于由Q_OBJECT声明的全部函数和全部信号的实现。像connect()和disconnnect()这样的QOBJECT成员函数使用这些内省函数来完成他们的工做。这些工做都是由qmake,moc和QObject自动处理的,因此不多须要再去考虑这些事情,若是好奇能够参考QMetaObject类的文档和由moc生成的c++源代码文件。


c++

相关文章
相关标签/搜索