Qt中的信号和槽是什么?

4
我知道它们的概念,但Qt框架中的信号和槽是如何实现的?Qt Creator将它们视为关键字,但它们只是一组宏,还是需要特殊的预处理器才能编译这些源文件?
换句话说,如果我在我的代码中使用Qt的信号/槽功能,我能否在任何C++编译器上轻松编译它?
3个回答

9
许多Qt的功能,包括信号,需要预处理源代码使用Qt元对象编译器(MOC)
如果您使用Qt的信号功能,则可以在任何受Qt支持的编译器和平台上编译源代码。如果您需要在Qt不支持的平台上进行编译,则可能会遇到困难或至少需要大量集成工作(当然,这也适用于任何库或框架)。
如果您正在寻找跨平台信号实现,您还可以考虑Boost.Signals

1

1
你可以使用Qt支持的任何编译器。其中最常用的编译器不知道是否有任何普及的编译器不受支持。然而,信号/插槽/moc在这里不是限制因素。 信号/槽需要调用moc可执行文件来处理声明QObjects的头文件并编译和链接生成的代码。因此,在现有构建系统中集成moc调用可能是最大的问题。如果您从头开始,请选择qmake或cmake。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接