混合使用Qt和Boost

66

我打算使用Qt 4框架(需要跨平台GUI)开始一个C++项目。我从朋友和网上听到了关于Boost库的很多好评。在阅读了两个库的资料后,我想在深入研究之前先问一个表面问题:这两个开发“系统”是互斥的吗?

我的初步搜索和阅读显示,在信号处理、自定义构建系统和其他低层原语等方面存在一些重叠。

在同一个项目中同时使用它们是否有意义?

7个回答

54

是的,这是完全合理的。通常情况下,我更喜欢使用Boost/标准库函数而不是它们的Qt替代品。

这会使代码更容易移植到下一个框架上。
这也会让新的非Qt程序员更容易地了解和掌握。
Boost拥有一些很棒的功能,而且正在不断增加中。

注:字符串与小部件之间的转换可能是主要的例外 - 在GUI内部,我会使用Qt字符串来避免混乱的类型转换。


30
Qt也拥有很强的功能,并且不断地得到增强。就我个人使用经验而言,与Boost相比,Qt拥有更好的文档。同时,可以认为使用Boost会让非Boost程序员变得更加困难。 - sivabudh
12
对于提升性能来说确实如此,但我仍然会使用std::vector等标准库的容器类而非Qt的集合类。 - Martin Beckett
更多的是观点而不是答案。 - Mohammad Kanan

31

1
好的论文。感谢提供链接。 - dwj

18

特别是在跨平台的情况下,你应该拥有一个良好的分层架构,将业务逻辑和数据访问尽可能地与GUI分离。在这种情况下,编写应用程序的后端时使用Boost会很有意义,只在必要的粘合代码中进行Qt前端的操作。

如果你的“引擎”与你选择的GUI分开,以后你可以轻松地将Qt替换为其他东西(例如本地库),减少工作量。


7
我们(Last.fm)同时使用这两种技术,尽管我们刚刚开始这样做,因此还没有太多的经验。到目前为止一切都很好:)

3

3

在与QT一起使用Boost.Signals时可能存在潜在问题。这些问题在Boost.Signals FAQ中有详细记录。


0
很抱歉,这不是一个好主意。混合来自不同源(Qt、stl、boost、其他类似的stl库)的类型会使代码变得难以阅读。当代码中的某个性能关键部分没有足够的时间执行时,确实有需要从一个库转换到另一个库以提高性能。但这种情况非常罕见。更好的做法是改变算法或代码设计,而不是匆忙地从一个库切换到另一个库。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接