我知道他們在概念上是如何工作的,但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究竟是什麼?