繁体   English   中英

Qt中的信号和插槽究竟是什么?

[英]What exactly are signals and slots in Qt?

我知道它们在概念上是如何工作的,但是Qt框架中的信号和插槽是如何实现的? Qt Creator将它们视为关键字,但它们只是一组宏,还是在编译这些源文件之前需要的特殊预处理器?

换句话说,如果我在代码中使用Qt的信号/插槽功能,我可以在任何C ++编译器上轻松编译吗?

Qt的许多功能,包括信号,都需要使用Qt元对象编译器(MOC)对源进行预处理。

如果您使用Qt的信号功能,您可以在Qt支持的任何编译器和平台上编译源代码。 如果你需要在Qt不支持的平台上编译,你可能会运气不好或至少在很多有趣的集成工作中(当然,任何库或框架都是如此)。

如果您正在寻找跨平台信号实现,您可能还会考虑Boost.Signals

是的,Qt中的信号和插槽是作为宏实现的。 但是,MOC(元对象编译器)用于解释它。 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

您可以使用任何编译器Qt支持。 哪些是最常用的,不知道是否有任何广泛的编译器不支持。 但是,信号/ slot / moc不是限制因素。 信号/槽需要在头文件上调用moc可执行文件,声明QObjects并生成代码以进行编译和链接。 因此,在现有构建系统中集成moc调用可能是最大的问题。 如果你从头开始,我建议去qmake或cmake。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM