前言
前两天有朋友面试被问到Qt的信号槽有什么优势。后来我们讨论了一下,下面记录一下自己的心得吧。
消息机制介绍
- MFC的消息机制其实就是消息映射机制,程序员需要将自定义消息和对应的处理函数添加到消息映射表中。通过PostMessage和SendMessage来实现异步和同步消息。
- Qt的信号槽机制是信号和槽函数通过QObject::connect动态链接上后存储到元对象系统中,通过emit发送信号,对应的槽函数执行。
比较
- Qt的信号槽是动态链接的,而MFC的消息映射是静态的
- Qt的信号槽支持自定义参数,且类型安全
- 在多线程中,MFC需要向已知线程对象发布消息,而Qt可以不考虑多线程之间的信号槽关系
总结
Qt相比较MFC的消息机制,使用起来更方便,最大的优势是Qt支持动态链接信号槽。