我正在尋找使用Qt 4框架在C++中啓動項目(需要跨平臺GUI)。我從朋友和在線聽說過關於Boost圖書館的很棒的事情。我已經開始閱讀兩篇文章,並且在我深入之前想問一個粗略的問題:這兩個開發「系統」是相互排斥的嗎?混合Qt和Boost
我最初的搜索和閱讀顯示了信號處理,自定義構建系統和其他低級基元的一些重疊。
在同一個項目中使用它們是否合理?
我正在尋找使用Qt 4框架在C++中啓動項目(需要跨平臺GUI)。我從朋友和在線聽說過關於Boost圖書館的很棒的事情。我已經開始閱讀兩篇文章,並且在我深入之前想問一個粗略的問題:這兩個開發「系統」是相互排斥的嗎?混合Qt和Boost
我最初的搜索和閱讀顯示了信號處理,自定義構建系統和其他低級基元的一些重疊。
在同一個項目中使用它們是否合理?
是的,它非常有意義。我通常更喜歡在可能的情況下使用boost/stdlib函數,而不是他們的Qt替代品。
它使代碼更容易移植到下一個框架。
這讓新的非Qt程序員更容易上手。
Boost有一些很棒的功能,並且一直都在增加。
注意:來自窗口小部件的字符串可能是主要的異常 - 在GUI內部,我會使用Qt字符串來保存無處不在的混亂轉換。
我們(Last.fm)一起使用它們,儘管我們只是開始這樣做,所以還沒有很好的經驗。到目前爲止一切正常:)
特別是因爲你要跨平臺,你應該有一個很好的分層架構,儘可能從GUI中刪除業務邏輯和數據訪問。在這種情況下,在編寫應用程序的後端時使用Boost是有意義的,並且只需要跳轉到前端的Qt,並在膠水中完成強制轉換。
如果您的「引擎」與您的GUI選擇是分開的,那麼您將可以用最少的努力將Qt換成未來的其他東西(本地庫)。
與QT一起使用Boost.Signals存在潛在的問題。這些記錄在Boost.Signals FAQ中。
This paper比較signal slots機制在QT和Boost::Signal非常體面。對於那些對這種混合有點好奇的人來說,這是必讀的。
請考慮Boost Signals2可用,它們是線程安全的。
Qt還具有很強的功能,並且也越來越多。與Boost相比,Qt有更好的(更好的)文檔(基於我的使用經驗)。有人可能會說,使用Boost會讓非Boost程序員變得更難。 – sivabudh 2010-03-04 18:56:50
對於提升是正確的,但我仍然會使用std :: vector等Qt的集合類 – 2010-11-24 19:27:46