我知道他們在概念上是如何工作的,但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 Qt中的信號和插槽
- 3. QT信號和插槽
- 4. Qt信號和插槽xml
- 5. Qt PushButton信號和插槽
- 6. C++,Qt信號和插槽
- 7. 信號和插槽QT
- 8. 爲什麼我的Qt信號/插槽斷點未命中? (信號/插槽)
- 9. QT中的信號插槽
- 10. QT信號/插槽
- 11. 究竟是什麼插座
- 12. 什麼是信號和插槽?
- 13. 關於qt中的信號和插槽
- 14. QT中的信號和插槽
- 15. D3D輸入插槽究竟是什麼,以及OpenGL的等價物是什麼?
- 16. Qt信號插槽:信號已發送,但未插入插槽
- 17. 用於Qt C++的信號和插槽
- 18. Qt連接信號插槽
- 19. Qt連接信號插槽
- 20. QT-Dbus信號/插槽?
- 21. 信號和槽Qt中
- 22. Qt信號和插槽連接兩次...會發生什麼?
- 23. Qt - 發送插槽而不是信號
- 24. Qt信號和插槽通過參考
- 25. Qt連接信號和插槽
- 26. 信號和插槽幫助QT
- 27. QT信號和插槽功能簽名
- 28. 初學Qt信號和插槽問題
- 29. Qt信號和插槽對象斷開?
- 30. Qt插槽和信號語法