#error "The header file 'widget.h' doesn't include <QObject>." #elif Q_MOC_OUTPUT_REVISION != 67 #error "This file was generated using the moc from 5.9.8. It" #error "cannot be used with the include files from this version of Qt." #error "(The moc has changed too much.)" ...
qt_add_executable命令在内部自动处理了与Qt相关的构建步骤,例如自动生成moc文件(元对象编译),处理Qt资源文件(qrc),并将这些步骤与目标可执行文件的构建过程进行了整合。这样,可以更简化和统一Qt项目的构建过程,减少手动配置的需求。 qt_add_executable命令在生成目标可执行文件时使用了更好的默认设置,例如自动添加预定...
在moc文件里找到qt_static_metacall定义,如果是默认工程,似乎也不做什么: //moc_mainwindow.cppvoidMainWindow::qt_static_metacall(QObject*_o,QMetaObject::Call_c,int_id,void**_a){Q_UNUSED(_o);Q_UNUSED(_id);Q_UNUSED(_c);Q_UNUSED(_a);} 对于const QMetaObject * const *relatedMetaObjects ...
在moc文件中找到qt_meta_data_MainWindow定义,它是一个uint数组,目前还看不出它的作用。 //moc_mainwindow.cppstaticconstuint qt_meta_data_MainWindow[] = {// content:8,// revision0,// classname0,0,// classinfo0,0,// methods0,0,// properties0,0,// enums/sets0,0,// constructors0,/...
1、QObject提供⼀个基类,⽅便派⽣类使⽤meta-object系统的功能;2、Q_OBJECT宏,在类的声明体内激活meta-object功能,⽐如动态属性、信号、槽;3、Meta Object编译器(MOC),为每个QObject派⽣类⽣成代码,以⽀持meta-object功能。QObject定义了从⼀个QObject对象访问meta-object功能的接⼝,Q_...
# 使自动编译UIC(将ui文件转换成c++可编译或链接的文件) MOC(将qt元对象转换为c++可编译或链接的文件) RCC(将其他可资源文件转换为c++可编译或链接的文件) 可用 set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) # **设置编译器 ...
如果一个类的声明中包含Q_OBJECT宏,那么qmake将为这个类生成meta信息,这个信息在前一篇中所提到的moc文件中。这一篇通过解析这个一个示例moc文件来阐述这些meta信息的存储方式和格式;本篇先说明了一下QMetaObject的数据结构,然后呈现了一个简单的类TestObject类及其生成的moc文件,最后对这个moc文件个内容进行了详细解释...
代码首先检查返回值的类型是否正确;再检查参数的个数是否匹配,看懂这段代码需要参考该系列之二对moc文件的解析;再依据当前线程和被调对象所属 线程来调整connnection type;如果是directconnection,直接调用 QMetaObject::metacall(object, QMetaObject::InvokeMetaMethod, methodIndex, param),param是将所有参数值指针排列...
2.1 moc文件构成 2.1.1 类信息qt_meta_stringdata_* 类信息结构体 struct qt_meta_stringdata_QtSingalSlotTest_t { QByteArrayData data[6]; char stringdata0[52]; }; 1. 2. 3. 4. data字段是一个由QByteArrayData数组组成的数组,数组大小根据信号&槽个数有关,这个数组在调用QObject的connect函数时用...