每个EventDelegate拥有一个不同种类的delegate. 重载()运算符.
对外提供的统一的接口是().
达到封装不同函数指针,的效果.
每个对象一个字符串名
一方提供delegate
一方将deletegate 绑到期望的函数上.
类似集中 connect 信号槽.
把connect 分成两步.
第一步 提供方在管理器中宣告提供某种信号服务.
第二步 需求方在管理器中宣告对某种信号感兴趣.
用宏实现 emit
将函数变量的地址逐一保存下来.
将编译时依赖转换为运行时依赖
- bool QMetaObject::connect(const QObject *sender, int signal_index,
- const QObject *receiver, int method_index, int type, int *types)
- {
- QConnectionList *list = ::connectionList();
- if (!list)
-
return false;
- QWriteLocker locker(&list->lock);
- list->addConnection(const_cast<QObject *>(sender), signal_index,
- const_cast<QObject *>(receiver), method_index, type, types);
- return true;
- }