Qt被归类为c ++库吗?如果不是图书馆,你会如何对QT进行分类?

时间:2009-09-02 15:37:25

标签: c++ qt cross-platform language-design

我最近开始研究Qt(我安装了Qt 4.5.2并安装了他们的Eclipse-CDT插件,称为“qt integration v1.5.2”,我将在Linux-Eclipse-CDT-QTintegration中进行所有开发)。

最初我认为Qt是一个直接的vanilla C ++库但是当我安装并开始运行Qt示例代码时,我看到很多“怪异”的东西,我认为是非标准的。

我的目标是在高层次的抽象中理解:

  • Qt被归类为C ++库吗?
  • 如果不是图书馆,你会如何对Qt进行分类(类比/比喻被赞赏)?

3 个答案:

答案 0 :(得分:30)

Qt是一个框架,而不是一个库。这不是编程语言强制执行的硬性区分,而是描述了代码的设计和使用方式:

是您的代码使用的其他人的代码。使用库意味着您的应用程序保持原样,它只有另一个库来帮助它。

框架是您的代码适合的其他人的代码。使用框架意味着框架定义了应用程序的结构。

如果您正在使用框架,则需要了解该框架的约定,这些约定可能与基本语言略有不同;否则,你可以花很多时间来对抗这个框架,你会错过它所能提供的一些东西。

Qt特别看起来不像直接的香草C ++,因为它不是直接的香草C ++。它为C ++的对象系统添加(有限的)扩展,以允许信号和插槽等功能;这些扩展是使用Qt的moc实现的,它充当C ++预处理器。有关Qt的C ++扩展的更多信息:

答案 1 :(得分:3)

Qt是一组C ++库以及预处理器和构建系统的一部分。

答案 2 :(得分:2)

大多数gui框架/库都添加到该语言中,因为C ++本身并不支持gui所需的事件(或直到最近才这样做。)

Qt选择使用语言扩展和预编译器来执行此操作,MFC和wxWidgets使用c宏和c预处理器执行此操作。 Qt方法意味着它可以做更多的事情(它不受cpp宏语言的限制),而代价是稍微复杂的构建环境。