我知道他们在概念上是如何工作的,但Qt框架中的信号和插槽是如何实现的? Qt Creator将它们视为关键字,但是它们只是一组宏,还是在这些源文件可以编译之前需要特殊的预处理器?换句话说,如果我在代码中使用Qt的信号/插槽特性,我可以在任何C++编译器上轻松编译它吗?Qt中的信号和插槽究竟是什么?
4
A
回答
9
Qt的许多功能,包括信号,都需要预处理源using the Qt Meta-Object Compiler (MOC)。
如果您使用Qt的信号功能,您可以在Qt支持的任何编译器和平台上编译您的源代码。如果你需要在Qt不支持的平台上进行编译,那么你可能会走运,或者至少在很多有趣的集成工作中(当然这对于任何库或框架都是如此)。
如果您正在寻找跨平台信号实施,您可能还会考虑Boost.Signals。
1
是的,Qt中的信号和插槽被实现为宏。但是MOC(Meta对象编译器)用于解释它。 MOC是Qt的一部分。
如果你想在非Qt项目中使用信号/插槽,你可以使用Boost实现(http://www.boost.org/doc/libs/1_39_0/doc/html/signals.html)。
其他实现上市的wiki页面:http://en.wikipedia.org/wiki/Signals_and_slots
1
你可以使用任何编译Qt支持。哪些是最常用的,不知道是否有任何广泛的编译器不支持。然而,这里信号/时隙/ moc不是限制因素。信号/插槽需要在声明QObject的头文件和要编译和链接的生成代码上调用moc可执行文件。因此,将moc调用集成到您现有的构建系统中可能是最大的问题。如果你从头开始,我会建议去找qmake或者cmake。
相关问题
- 1. Qt类中的插槽和信号是什么意思?
- 2. Qt Qt中的信号和插槽
- 3. QT信号和插槽
- 4. Qt信号和插槽xml
- 5. Qt PushButton信号和插槽
- 6. C++,Qt信号和插槽
- 7. 信号和插槽QT
- 8. 为什么我的Qt信号/插槽断点未命中? (信号/插槽)
- 9. QT中的信号插槽
- 10. QT信号/插槽
- 11. 究竟是什么插座
- 12. 什么是信号和插槽?
- 13. 关于qt中的信号和插槽
- 14. QT中的信号和插槽
- 15. D3D输入插槽究竟是什么,以及OpenGL的等价物是什么?
- 16. Qt信号插槽:信号已发送,但未插入插槽
- 17. 用于Qt C++的信号和插槽
- 18. Qt连接信号插槽
- 19. Qt连接信号插槽
- 20. QT-Dbus信号/插槽?
- 21. 信号和槽Qt中
- 22. Qt信号和插槽连接两次...会发生什么?
- 23. Qt - 发送插槽而不是信号
- 24. Qt信号和插槽通过参考
- 25. Qt连接信号和插槽
- 26. 信号和插槽帮助QT
- 27. QT信号和插槽功能签名
- 28. 初学Qt信号和插槽问题
- 29. Qt信号和插槽对象断开?
- 30. Qt插槽和信号语法