QObject在QT中是所有类的基类,经过MOC处理后代码如下

之所以贴出这段代码,是因为很多流程追踪到最后一些关键性函数都是出自这个类

源码 4.8.6 MOC版本 63

 /****************************************************************************
** Meta object code from reading C++ file 'qobject.h'
**
** Created by: The Qt Meta Object Compiler version 63 (Qt 4.8.6)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/ #include "qobject.h"
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'qobject.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 63
#error "This file was generated using the moc from 4.8.6. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif QT_BEGIN_MOC_NAMESPACE
static const uint qt_meta_data_QObject[] = { // content:
, // revision
, // classname
, , // classinfo
, , // methods
, , // properties
, , // enums/sets
, , // constructors
, // flags
, // signalCount // signals: signature, parameters, type, tag, flags
, , , , 0x05,
, , , , 0x25, // slots: signature, parameters, type, tag, flags
, , , , 0x0a,
, , , , 0x08, // properties: name, type, flags
, , 0x0a095103, // constructors: signature, parameters, type, tag, flags
, , , , 0x0e,
, , , , 0x2e, // eod
}; static const char qt_meta_stringdata_QObject[] = {
"QObject\0\0destroyed(QObject*)\0destroyed()\0"
"deleteLater()\0_q_reregisterTimers(void*)\0"
"QString\0objectName\0parent\0QObject(QObject*)\0"
"QObject()\0"
}; void QObject::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::CreateInstance) {
switch (_id) {
case : { QObject *_r = new QObject((*reinterpret_cast< QObject*(*)>(_a[])));
if (_a[]) *reinterpret_cast<QObject**>(_a[]) = _r; } break;
case : { QObject *_r = new QObject();
if (_a[]) *reinterpret_cast<QObject**>(_a[]) = _r; } break;
}
} else if (_c == QMetaObject::InvokeMetaMethod) {
Q_ASSERT(staticMetaObject.cast(_o));
QObject *_t = static_cast<QObject *>(_o);
switch (_id) {
case : _t->destroyed((*reinterpret_cast< QObject*(*)>(_a[]))); break;
case : _t->destroyed(); break;
case : _t->deleteLater(); break;
case : _t->d_func()->_q_reregisterTimers((*reinterpret_cast< void*(*)>(_a[]))); break;
default: ;
}
}
} const QMetaObjectExtraData QObject::staticMetaObjectExtraData = {
, qt_static_metacall
}; const QMetaObject QObject::staticMetaObject = {
{ , qt_meta_stringdata_QObject,
qt_meta_data_QObject, &staticMetaObjectExtraData }
}; #ifdef Q_NO_DATA_RELOCATION
const QMetaObject &QObject::getStaticMetaObject() { return staticMetaObject; }
#endif //Q_NO_DATA_RELOCATION const QMetaObject *QObject::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject;
} void *QObject::qt_metacast(const char *_clname)
{
if (!_clname) return ;
if (!strcmp(_clname, qt_meta_stringdata_QObject))
return static_cast<void*>(const_cast< QObject*>(this));
return ;
} int QObject::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
if (_id < )
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < )
qt_static_metacall(this, _c, _id, _a);
_id -= ;
}
#ifndef QT_NO_PROPERTIES
else if (_c == QMetaObject::ReadProperty) {
void *_v = _a[];
switch (_id) {
case : *reinterpret_cast< QString*>(_v) = objectName(); break;
}
_id -= ;
} else if (_c == QMetaObject::WriteProperty) {
void *_v = _a[];
switch (_id) {
case : setObjectName(*reinterpret_cast< QString*>(_v)); break;
}
_id -= ;
} else if (_c == QMetaObject::ResetProperty) {
_id -= ;
} else if (_c == QMetaObject::QueryPropertyDesignable) {
_id -= ;
} else if (_c == QMetaObject::QueryPropertyScriptable) {
_id -= ;
} else if (_c == QMetaObject::QueryPropertyStored) {
_id -= ;
} else if (_c == QMetaObject::QueryPropertyEditable) {
_id -= ;
} else if (_c == QMetaObject::QueryPropertyUser) {
_id -= ;
}
#endif // QT_NO_PROPERTIES
return _id;
} // SIGNAL 0
void QObject::destroyed(QObject * _t1)
{
void *_a[] = { , const_cast<void*>(reinterpret_cast<const void*>(&_t1)) };
QMetaObject::activate(this, &staticMetaObject, , _a);
}
QT_END_MOC_NAMESPACE

仅供参考,做一些深层次的分析

QObject类 moc处理后代码的更多相关文章

  1. 8、QObject类 moc处理后代码

    QObject在QT中是所有类的基类,经过MOC处理后代码如下 之所以贴出这段代码,是因为很多流程追踪到最后一些关键性函数都是出自这个类 源码 4.8.6 MOC版本 63 1 /********** ...

  2. JD-GUI反编译后代码逻辑分析

    一,用jd-gui.exe等工具查看源代码.如何你不会,可以参看此文章: http://blog.csdn.net/hp_2008/article/details/8207879 可以到以下连接下载可 ...

  3. [置顶] NS2中对TCP数据包和ACK包的TCP Sink类的主要实现代码详尽剖析--吐血放送

    NS2中对TCP数据包和ACK包的TCP Sink类的主要实现代码详尽剖析,限于个人水平,如有错误请留言指出! TcpSink类的recv()方法: void TcpSink::recv(Packet ...

  4. 1.QObject类

    简述 QObject类是所有Qt对象的基类. QObject是Qt对象模型的核心. 该模型的核心特征是称为信号和槽的对象通信机制. 您可以使用connect()将信号连接到槽,并用disconnect ...

  5. 关于 QObject 类

    1.QObject类   简述 QObject类是所有Qt对象的基类. QObject是Qt对象模型的核心. 该模型的核心特征是称为信号和槽的对象通信机制. 您可以使用connect()将信号连接到槽 ...

  6. C++派生类中如何初始化基类对象(五段代码)

    今天收到盛大的面试,问我一个问题,关于派生类中如何初始化基类对象,我在想派生类对于构造函数不都是先构造基类对象,然后在构造子类对象,但是如果我们在成员初始化列表先初始化派生类的私有成员,在函数内去调用 ...

  7. Qt::QObject类

    QObject 类是Qt 所有类的基类. QObject是Qt对象模型的核心.这个模型的中心要素就是一种强大的叫做信号与槽无缝对象沟通机制.你可以用 connect()函数来把一个信号连接到槽,也可以 ...

  8. 谈谈Delphi中的类和对象4---类是一种对数据和操作高度的封装机制 && 类是一种代码重用机制

    五.类是一种对数据和操作高度的封装机制 1)数据封装 unit Unit2; interface type TEmployee = class; private FName: String; publ ...

  9. 关于QObject类的一些理解

    QRunnable并没有继承自QObject,所以它和其他QObject组件的通信不能使用传统的信号和槽,要是用信号和槽我们必须将其继承自QObject自动的添加 QThread的退出最好用exit( ...

随机推荐

  1. C语言学习记录_2019.02.04

    逻辑性变量的定义符:bool,在C语言中只有true和false: 定义方式:bool t = true; 逻辑运算符: !:逻辑非 &&:逻辑与 ||:逻辑或 表达区间的错误形式:4 ...

  2. Lvm linux磁盘分区管理(多个分区合并成一个)

    备份# rsync -avP -e ssh /data qqmap@10.173.139.100:/data1/qqmap/backup/10.234.22.143卸载# umount /data / ...

  3. springboot 读写excel

    添加两个坐标: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</a ...

  4. 一个例子说明substr(), mb_substr() 和 mb_strcut()之间的区别

    例子来自PHP官方文档,我只是翻译下. http://www.php.net/manual/zh/function.mb-strcut.php header( 'Content-Type:text/h ...

  5. 华天正real210开发板测试-第1篇

    1. 网上买的real210二手开发板,今天刚到测试一下 2. 启动方式,不过目前唯一的问题是没有开发资料,然后给原厂发了份邮件要资料,原厂爽快的给了,必须给华天正这服务态度点个赞啊 3. 调到nan ...

  6. 微信小程序学习笔记(1)-微信小程序样式设置逻辑

    1.微信小程序的样式设置统一在每一页的.wxss的样式文件中,所有的样式设置代码统一写入这个文件中: 2.样式主要是通过.wxml里面控件的“class”属性来调用,此处调用会有几个细节要注意: 1) ...

  7. WEB中间件漏洞--IIS

    1.iis安装 版本 一直下一步,选上iis安装 端口修改 网站目录 通过网站发布目录(发布目录任意),新建index.html页面,可以正常访问 2.iis6.0解析漏洞 (1)文件名解析 IIS在 ...

  8. (C#)设计模式之装饰模式

    1.装饰模式 动态的给一个对象添加一些额外的职责,就添加功能来说,装饰模式比生成子类更加灵活.*装饰模式是为已有功能动态添加更多功能的一种方式.*装饰模式将原有类中的核心职责与装饰功能分离.简化了原有 ...

  9. Navicat和DBeaver的查询快捷键

    1.Navicat for MySQL(连接MySQL数据库的工具) ctrl + r 执行查询页中所有的sql语句 ctrl + shift + r 只运行选中的sql语句 2.DBeaver(支持 ...

  10. synchronized 详细解说

    转自  http://blog.csdn.net/javazejian/article/details/72828483 出自[zejian的博客] 写的很详细很好,做下记录 本篇主要是对Java并发 ...