我知道他们在概念上是如何工作的,但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信号和插槽
- 3. 信号和插槽QT
- 4. QT信号/插槽
- 5. 究竟是什么插座
- 6. 什么是信号和插槽?
- 7. 关于qt中的信号和插槽
- 8. QT中的信号和插槽
- 9. Qt - 两类中的信号和插槽
- 10. Qt信号插槽:信号已发送,但未插入插槽
- 11. D3D输入插槽究竟是什么,以及OpenGL的等价物是什么?
- 12. Qt连接信号插槽
- 13. Qt信号和插槽连接两次...会发生什么?
- 14. QT信号和插槽意外错误
- 15. Qt信号和插槽对象断开?
- 16. Qt如何实现信号和插槽?
- 17. QT信号和插槽功能签名
- 18. Qt信号/插槽和线程
- 19. 初学Qt信号和插槽问题
- 20. C++ Qt设置信号和插槽QMenu
- 21. 可视化QT信号和插槽
- 22. 信号和插槽帮助QT
- 23. 调试Qt信号,插槽和连接
- 24. 究竟是MySQL中的“尾随空间”究竟是什么?
- 25. Qt插槽和信号。获取插槽接收器对象
- 26. 信号和插槽
- 27. 没有这样的插槽/信号(Qt)
- 28. 带线程的Qt信号插槽
- 29. 插槽断开后的Qt信号
- 30. DEFAULT_COMPRESSION究竟是什么?