QT_MOC_LITERAL(0, 0, 7), // "Myclass" QT_MOC_LITERAL(1, 8, 5), // "Owner" QT_MOC_LITERAL(2, 14, 5), // "Frank" QT_MOC_LITERAL(3, 20, 12), // "vualeChanged" QT_MOC_LITERAL(4, 33, 0), // "" QT_MOC_LITERAL(5, 34, 14), // "onValueChanged" QT_MOC_LITERAL(...
44对应 多少项 ,有22个QT_MOC_LITERAL宏,展开之后有44项,记录了类的所有元对象信息。 第一个宏代表的是类名,offsetof 用来查询结构体内的成员的偏移地址,类名Object的偏移地址是4*44 = 176, 6代表Object的长度。依次类推,注意QT_MOC_LITERAL(59, 0) 是个空,这是由构造函数前的宏造成的,Q_INVOKABLE,会...
//moc_mainwindow.cppstructqt_meta_stringdata_MainWindow_t{QByteArrayData data[1];charstringdata0[11]; }; 也就是说stringdata的值为QT_MOC_LITERAL(0, 0, 10) // "MainWindow"。 继续找到QT_MOC_LITERAL的定义: //moc_mainwindow.cpp#defineQT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_A...
#error "(The moc has changed too much.)" #endif QT_BEGIN_MOC_NAMESPACE QT_WARNING_PUSH QT_WARNING_DISABLE_DEPRECATED struct qt_meta_stringdata_Widget_t { QByteArrayData data[3]; char stringdata0[13]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INIT...
#define QT_MOC_LITERAL(idx, ofs, len) \Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \qptrdiff(offsetof(qt_meta_stringdata_Tom_t, stringdata0) + ofs \- idx * sizeof(QByteArrayData)) \)staticconstqt_meta_stringdata_Tom_tqt_meta_stringdata_Tom={{QT_MOC_LITERAL(0,0...
QT_BEGIN_MOC_NAMESPACE QT_WARNING_PUSH QT_WARNING_DISABLE_DEPRECATED struct qt_meta_stringdata_XTest_t { QByteArrayData data[15]; char stringdata0[91]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ ...
QT_MOC_LITERAL(4,31,8), QT_MOC_LITERAL(5,40,5) }, "Counter\0valueChanged\0\0newValue\0setValue\0" "value\0" }; #undef QT_MOC_LITERAL 这主要是一个 QByteArray 的静态数组。QT_MOC_LITERAL 宏创建了一个静态的 QByteArray,引用了后面字符串的特性索引位置。
staticconstqt_meta_stringdata_PluginDemo_t qt_meta_stringdata_PluginDemo={{QT_MOC_LITERAL(0,0,10)// "PluginDemo"},"PluginDemo"};void*PluginDemo::qt_metacast(constchar*_clname){if(!_clname)returnQ_NULLPTR;if(!strcmp(_clname,qt_meta_stringdata_PluginDemo.stringdata0))returnstatic_cast...
通过把QT_MOC_LITERAL这个宏进行替换后,得到如下数据 : 接下来我们看看下面qt_meta_data_MainWindow这个数组结构:content有两列,第一列是总数,第二列是在这个数组中描述开始的索引,如1, 14, // methods,说明有一个methods,我们可以看到slots就是从索引14开始的。
QT_MOC_LITERAL(5, 28, 7), QT_MOC_LITERAL(6, 36, 7) }, "CTestMoc\0Test1\0\0Test2\0iTemp\0OnTest1\0" "OnTest2\0" }; qt_meta_stringdata_CTestMoc 这个就是一个 qt_meta_stringdata_CTestMoc_t结构体的实例。 QT_MOC_LITERAL(0, 0, 8), 这个宏生成一个byte数组,第一参数是索引,大...