簡體   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