2008-12-11 66 views
65

我正在寻找使用Qt 4框架在C++中启动项目(需要跨平台GUI)。我从朋友和在线听说过关于Boost图书馆的很棒的事情。我已经开始阅读两篇文章,并且在我深入之前想问一个粗略的问题:这两个开发“系统”是相互排斥的吗?混合Qt和Boost

我最初的搜索和阅读显示了信号处理,自定义构建系统和其他低级基元的一些重叠。

在同一个项目中使用它们是否合理?

回答

55

是的,它非常有意义。我通常更喜欢在可能的情况下使用boost/stdlib函数,而不是他们的Qt替代品。

它使代码更容易移植到下一个框架。
这让新的非Qt程序员更容易上手。
Boost有一些很棒的功能,并且一直都在增加。

注意:来自窗口小部件的字符串可能是主要的异常 - 在GUI内部,我会使用Qt字符串来保存无处不在的混乱转换。

+30

Qt还具有很强的功能,并且也越来越多。与Boost相比,Qt有更好的(更好的)文档(基于我的使用经验)。有人可能会说,使用Boost会让非Boost程序员变得更难。 – sivabudh 2010-03-04 18:56:50

+12

对于提升是正确的,但我仍然会使用std :: vector等Qt的集合类 – 2010-11-24 19:27:46

7

我们(Last.fm)一起使用它们,尽管我们只是开始这样做,所以还没有很好的经验。到目前为止一切正常:)

17

特别是因为你要跨平台,你应该有一个很好的分层架构,尽可能从GUI中删除业务逻辑和数据访问。在这种情况下,在编写应用程序的后端时使用Boost是有意义的,并且只需要跳转到前端的Qt,并在胶水中完成强制转换。

如果您的“引擎”与您的GUI选择是分开的,那么您将可以用最少的努力将Qt换成未来的其他东西(本地库)。

3

与QT一起使用Boost.Signals存在潜在的问题。这些记录在Boost.Signals FAQ中。