2020-11-23 信号与槽细节

2022-03-06  本文已影响0人  hangzhou吴彦祖

1:

们知道C++中的函数要有声明(declare),也要有实现(implement),

而信号只要声明,不需要写实现。这是因为moc会为我们自动生成。

QObject宏  生成moc.cpp文件 对一个静态变量staticMetaObject进行实现;

staticMetaObject是一个结构体,用来存储Tom这个类的信号、槽等元信息,并把

qt_static_metacall静态函数作为函数指针存储起来。因为是静态成员,所以实例化多少个Tom对象,它们的元信息都是一样的。qt_static_metacall函数提供了两种“元调用的实现”:

如果是InvokeMetaMethod类型的调用,则直接 把参数中的QObject对象,

转换成Tom类然后调用其miao函数如果是IndexOfMethod类型的调用,即获取元函数的索引号,则计算miao函数的偏移并返回。

voidTom::miao(){QMetaObject::activate(this,&staticMetaObject,0,nullptr);}

上一篇 下一篇

猜你喜欢

热点阅读