Qt元对象(Meta-Object)系统与反射】的更多相关文章

Qt 是一个用标准 C++ 编写的跨平台开发类库,它对标准 C++ 进行了扩展,引入了元对象系统.信号与槽.属性等特性,使应用程序的开发变得更高效. 本节将介绍 Qt 的这些核心特点,对于理解和编写高效的 Qt C++ 程序是大有帮助的. Qt 的元对象系统 Qt 的元对象系统(Meta-Object System)提供了对象之间通信的信号与槽机制.运行时类型信息和动态属性系统. 元对象系统由以下三个基础组成: QObject 类是所有使用元对象系统的类的基类. 在一个类的 private 部分…
Qt 元对象系统(Meta-Object System) Qt的元对象系统基于如下三件事情: 类:QObject,为所有需要利用原对象系统的对象提供了一个基类. 宏:Q_OBJECT,通常可以声明在类的私有段中,让该类可以使用元对象对象的特性,比如动态属性,信号和槽. 编译器:元对象编译器(moc)为每个QObject子对象自动生成必要的代码来实现元对象特性. moc工具会读入C++的源文件,如果它发现了一个或者多个声明了Q_OBJECT宏的类,它就创建另一个C++源文件,为每个类生成包含元对象…
反射 -在计算机科学中,反射是指计算机程序在运行时(Run time)可以访问.检测和修改它本身状态或行为的一种能力.[1]用比喻来说,反射就是程序在运行的时候能够“观察”并且修改自己的行为. 要注意术语“反射”和“内省”(type introspection)的关系.内省(或称“自省”)机制仅指程序在运行时对自身信息(称为元数据)的检测:反射机制不仅包括要能在运行时对程序自身信息进行检测,还要求程序能进一步根据这些信息改变程序状态或结构. C++的反射 C++的标准语法是不提供反射的特性的,不…
在Qt中提供了c++的扩展,提供了一种元对象系统的机制,(meta-object-system)的机制.其中包含了信号与槽的内部机制,能够访问到QObject子类的元对象信息的功能. Q_OBJECT 宏声明了在每一个QObject子类中必须首选的内省函数:metaObject(),tr(),qt_metacall()以及其他一些函数 Qt的moc工具生成了用于Q_OBJECT声明的所有函数和所有信号的实现 同时也提供了connect()和disconnect()这样的内省函数 Qt 不使用标准…
概述查看Qt源码可知,Q_INVOKABLE是个空宏,目的在于让moc识别. 使用Q_INVOKABLE来修饰成员函数,目的在于被修饰的成员函数能够被元对象系统所唤起. Q_INVOKABLE与QMetaObject::invokeMethod均由元对象系统唤起.这一机制在Qt C++/QML混合编程,跨线程编程,Qt Service Framework 以及 Qt/ HTML5混合编程以及里广泛使用. QMetaObject::invokeMethod的声明如下,还有几个inline重载: s…
(转自:http://blog.csdn.net/aladdina/article/details/5496891) Qt的元对象系统基于如下三件事情: 类:QObject,为所有需要利用原对象系统的对象提供了一个基类. 宏:Q_OBJECT,通常可以声明在类的私有段中,让该类可以使用元对象对象的特性,比如动态属性,信号和槽. 编译器:元对象编译器(moc)为每个QObject子对象自动生成必要的代码来实现元对象特性. moc工具会读入C++的源文件,如果它发现了一个或者多个声明了Q_OBJEC…
官方解释 我们在Qt源码中可以看到一个QObject的子类经常会用到一些Q_开头的宏,例如QMainWindow类开始部分代码是这样的: Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize) Q_PROPERTY(Qt::ToolButtonStyle toolButtonStyle READ toolButtonStyle WRITE setToolButtonStyle) ......public: enum DockOptio…
元对象系统 Qt中的元对象系统是用来处理对象间通讯的信号/槽机制.运行时的类型信息和 动态属性系统. 它基于下列三类: QObject类: 类声明中的私有段中的Q_OBJECT宏: 元对象编译器(moc). moc读取C++源文件.如果它发现其中包 含一个或多个类的声明中含有Q_OBJECT宏,它就会给含有Q_OBJECT宏的类生成另一个 含有元对象代码的C++源文件.这个生成的源文件可以被类的源文件包含(#include) 到或者和这个类的实现一起编译和连接. 除了提供对象间通讯的信号和槽机制…
http://www.cnblogs.com/hellovenus/p/5582521.html 一.元对象 元对象(meta object)意思是描述另一个对象结构的对象,比如获得一个对象有多少成员函数,有哪些属性.在Qt中,我们将要用到的是QMetaObject这个类. 元对象系统基于以下3点: 以QObject作为基类 类声明的私有区域中,Q_Object宏指令使我们能够使用元对象的特性,比如动态属性.信号.槽等 元对象编译器(Meta-Object Compiler  moc)为QObj…
Qt元对象系统提供了对象间的通信机制:信号和槽.以及执行类形信息和动态属性系统的支持.是标注C++的一个扩展,它使得Qt可以更好的实现GUI图形用户界面编程.Qt的元对象系统不支持C++模板.虽然模板扩展了C++的功能,可是元对象提供了模板无法提供的一些特性. Qt的元对象基于三个事实:     1. 基类Q_OBJECT,不论什么想使用元对象系统功能的类必须继承自QOBject;     2. Q_OBJECT宏,Q_OBJECT宏必须出如今类的私有声明区,以完毕元对象的特性.     3.…