2009-08-09 17 views
26

我对学习Qt感兴趣。我对C++,STL和Boost很满意。我非常喜欢STL/Boost风格,只要我能够在uni项目中使用它们就可以使用它们。但是,我总是想念GUI。在我看来,Qt似乎是最好的解决方案。 Qt确实有很好的容器集合,但我非常熟悉STL/Boost的东西。Qt是否可以与STL和Boost合作?

在学习Qt并与STL/Boost并行使用时应该注意什么?

回答

32

是的,Qt对Boost和STL都很好。大多数STL功能都在Qt中重复使用,以确保所有支持Qt的平台都支持这些功能。然而,没有任何东西禁止您使用Qt缺乏的Qt构造或功能的STL/boost对应。

虽然Qt有它自己的字符串,容器和算法对象,但它也包含很多与STL兼容的函数。例如,QString可以转换为std :: string,QVector可以与std :: for_each一起使用。 Qt还包含一些与boost相重叠的功能,如QPointer(与std:auto_ptr和boost:shared_ptr进行比较/对比)。

Creating Custom Qt Types文章可能会提供一些有关使用高级功能与升压对象(如transmitting custom objects between threads with queued connections)的深入见解。

参见:

11

的Qt确实工作得相当好一起STL,但像任何框架他们已经不得不更换一些STL结构出于需要(在只有你会发现自己被迫使用的是string/unicode)。来自Boost的一切都很好用 - 实际上它是一对可以一起使用的工具包,但是您需要小心boost :: signals,因为Qt也有一个信号实现并且名称可以重叠。 Boost在FAQ中涵盖了这一点,并且还有关于奇趣科技网站的一些信息以及如何避免该问题。

+2

Qt文档还解决了这里的信号/插槽问题:http://doc.trolltech.com/4.5/signalsandslots.html#using-qt-with-3rd-party-signals-and-slots – 2009-08-09 04:28:23

相关问题