开发者社区> 问答> 正文

moc生成的东西的大致逻辑,如SIGNAL、SLOT的实现方法,能否告知,或者有没有资料可以参考?

moc生成的东西的大致逻辑,如SIGNAL、SLOT的实现方法,能否告知,或者有没有资料可以参考?

展开
收起
OSC开源社区 2024-05-31 10:00:37 20 0
1 条回答
写回答
取消 提交回答
  • SIGNAL 和 SLOT 实际是两个宏,SIGNAL 展开成 protected,SLOT 展开成空

    moc 的大致思路是,提取标注有 Q_OBJECT 宏的类中所有的 signals 和 slots,将其做成一个 uint 数组的映射,指明每个属性的相对偏移值,从而在写了 emit 的地方,将 emit 后面的信号名字替换成实际生成的函数名(我们不需要自己写 signal 的函数体,这是因为 moc 会生成对应的代码)。

    这样便实现了 signal 一发,slot 便被调用(因为 Qt 从映射表中查找到 slot 的位置)。这是实现信号槽的核心。其它代码则是生成元数据,用以支持反射。

    2024-05-31 14:42:58
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载