博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
QObject类 moc处理后代码
阅读量:4519 次
发布时间:2019-06-08

本文共 5411 字,大约阅读时间需要 18 分钟。

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

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

源码 4.8.6 MOC版本 63

 

1 /****************************************************************************  2 ** Meta object code from reading C++ file 'qobject.h'  3 **  4 ** Created by: The Qt Meta Object Compiler version 63 (Qt 4.8.6)  5 **  6 ** WARNING! All changes made in this file will be lost!  7 *****************************************************************************/  8   9 #include "qobject.h" 10 #if !defined(Q_MOC_OUTPUT_REVISION) 11 #error "The header file 'qobject.h' doesn't include 
." 12 #elif Q_MOC_OUTPUT_REVISION != 63 13 #error "This file was generated using the moc from 4.8.6. It" 14 #error "cannot be used with the include files from this version of Qt." 15 #error "(The moc has changed too much.)" 16 #endif 17 18 QT_BEGIN_MOC_NAMESPACE 19 static const uint qt_meta_data_QObject[] = { 20 21 // content: 22 6, // revision 23 0, // classname 24 0, 0, // classinfo 25 4, 14, // methods 26 1, 34, // properties 27 0, 0, // enums/sets 28 2, 37, // constructors 29 0, // flags 30 2, // signalCount 31 32 // signals: signature, parameters, type, tag, flags 33 9, 8, 8, 8, 0x05, 34 29, 8, 8, 8, 0x25, 35 36 // slots: signature, parameters, type, tag, flags 37 41, 8, 8, 8, 0x0a, 38 55, 8, 8, 8, 0x08, 39 40 // properties: name, type, flags 41 90, 82, 0x0a095103, 42 43 // constructors: signature, parameters, type, tag, flags 44 108, 101, 8, 8, 0x0e, 45 126, 8, 8, 8, 0x2e, 46 47 0 // eod 48 }; 49 50 static const char qt_meta_stringdata_QObject[] = { 51 "QObject\0\0destroyed(QObject*)\0destroyed()\0" 52 "deleteLater()\0_q_reregisterTimers(void*)\0" 53 "QString\0objectName\0parent\0QObject(QObject*)\0" 54 "QObject()\0" 55 }; 56 57 void QObject::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) 58 { 59 if (_c == QMetaObject::CreateInstance) { 60 switch (_id) { 61 case 0: { QObject *_r = new QObject((*reinterpret_cast< QObject*(*)>(_a[1]))); 62 if (_a[0]) *reinterpret_cast
(_a[0]) = _r; } break; 63 case 1: { QObject *_r = new QObject(); 64 if (_a[0]) *reinterpret_cast
(_a[0]) = _r; } break; 65 } 66 } else if (_c == QMetaObject::InvokeMetaMethod) { 67 Q_ASSERT(staticMetaObject.cast(_o)); 68 QObject *_t = static_cast
(_o); 69 switch (_id) { 70 case 0: _t->destroyed((*reinterpret_cast< QObject*(*)>(_a[1]))); break; 71 case 1: _t->destroyed(); break; 72 case 2: _t->deleteLater(); break; 73 case 3: _t->d_func()->_q_reregisterTimers((*reinterpret_cast< void*(*)>(_a[1]))); break; 74 default: ; 75 } 76 } 77 } 78 79 const QMetaObjectExtraData QObject::staticMetaObjectExtraData = { 80 0, qt_static_metacall 81 }; 82 83 const QMetaObject QObject::staticMetaObject = { 84 { 0, qt_meta_stringdata_QObject, 85 qt_meta_data_QObject, &staticMetaObjectExtraData } 86 }; 87 88 #ifdef Q_NO_DATA_RELOCATION 89 const QMetaObject &QObject::getStaticMetaObject() { return staticMetaObject; } 90 #endif //Q_NO_DATA_RELOCATION 91 92 const QMetaObject *QObject::metaObject() const 93 { 94 return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; 95 } 96 97 void *QObject::qt_metacast(const char *_clname) 98 { 99 if (!_clname) return 0;100 if (!strcmp(_clname, qt_meta_stringdata_QObject))101 return static_cast
(const_cast< QObject*>(this));102 return 0;103 }104 105 int QObject::qt_metacall(QMetaObject::Call _c, int _id, void **_a)106 {107 if (_id < 0)108 return _id;109 if (_c == QMetaObject::InvokeMetaMethod) {110 if (_id < 4)111 qt_static_metacall(this, _c, _id, _a);112 _id -= 4;113 }114 #ifndef QT_NO_PROPERTIES115 else if (_c == QMetaObject::ReadProperty) {116 void *_v = _a[0];117 switch (_id) {118 case 0: *reinterpret_cast< QString*>(_v) = objectName(); break;119 }120 _id -= 1;121 } else if (_c == QMetaObject::WriteProperty) {122 void *_v = _a[0];123 switch (_id) {124 case 0: setObjectName(*reinterpret_cast< QString*>(_v)); break;125 }126 _id -= 1;127 } else if (_c == QMetaObject::ResetProperty) {128 _id -= 1;129 } else if (_c == QMetaObject::QueryPropertyDesignable) {130 _id -= 1;131 } else if (_c == QMetaObject::QueryPropertyScriptable) {132 _id -= 1;133 } else if (_c == QMetaObject::QueryPropertyStored) {134 _id -= 1;135 } else if (_c == QMetaObject::QueryPropertyEditable) {136 _id -= 1;137 } else if (_c == QMetaObject::QueryPropertyUser) {138 _id -= 1;139 }140 #endif // QT_NO_PROPERTIES141 return _id;142 }143 144 // SIGNAL 0145 void QObject::destroyed(QObject * _t1)146 {147 void *_a[] = { 0, const_cast
(reinterpret_cast
(&_t1)) };148 QMetaObject::activate(this, &staticMetaObject, 0, _a);149 }150 QT_END_MOC_NAMESPACE

 

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

转载于:https://www.cnblogs.com/lfsblack/p/5319437.html

你可能感兴趣的文章
sqlserver学习--1(登陆,时间函数,查看表结构,查看建表语句,IDENTITY() 函数,查询表名称,查询表结构)...
查看>>
MYSQL 日期函数
查看>>
Oracle触发器之替代触发器
查看>>
NodeJS基础教程之一
查看>>
你真的了解SDWebImage吗?
查看>>
BZOJ 1101 Luogu P3455 POI 2007 Zap (莫比乌斯反演+数论分块)
查看>>
C#嵌套类
查看>>
2017《面向对象程序设计》课程作业三
查看>>
[HDU] 1068 Girls and Boys(二分图最大匹配)
查看>>
ADO.NET类的模型关系图
查看>>
SRM 604 DIV2 250
查看>>
python中异常处理之esle,except,else
查看>>
看苹果官方API
查看>>
06-基础-系统指令-v-model-语法糖原理
查看>>
论文网站相关链接
查看>>
ipad4自动下载了ios8的安装包,好几个G啊,不想更新,怎么删了呢?
查看>>
JS中的Navigator 对象
查看>>
Android 开源控件与常用开发框架开发工具类
查看>>
记录一次网站打开卡--排故障过程
查看>>
第四章小结
查看>>