C++ Qt是否被归类为c++;图书馆?如果不是库,您将如何对QT进行分类?

C++ Qt是否被归类为c++;图书馆?如果不是库,您将如何对QT进行分类?,c++,qt,cross-platform,language-design,C++,Qt,Cross Platform,Language Design,我最近开始研究Qt(我安装了Qt4.5.2并安装了他们的Eclipse CDT插件“Qt integration v1.5.2”,我将在Linux Eclipse CDT QTintegration中进行所有开发) 最初我认为Qt是一个直的香草C++库,但是当我安装并开始运行QT示例代码时,我看到了很多我认为是非标准的“奇怪”的东西。p> 我的目标是在较高的抽象层次上理解: > Qt被分类为C++库?< /强> 如果不是库,您会如何对Qt进行分类(类比/隐喻很受欢迎) qt是一组C++库

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

最初我认为Qt是一个直的香草C++库,但是当我安装并开始运行QT示例代码时,我看到了很多我认为是非标准的“奇怪”的东西。p> 我的目标是在较高的抽象层次上理解:

    <> > Qt被分类为C++库?< /强>
  • 如果不是库,您会如何对Qt进行分类(类比/隐喻很受欢迎)

qt是一组C++库,包含一个预处理器和一个编译系统的一部分。

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

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

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

如果您正在使用一个框架,您需要学习该框架的约定,这可能与基础语言有点不同;否则,您可能会花费大量时间与框架抗争,您将错过它所提供的一些功能

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


大多数GUI框架/库添加到语言中,只是因为C++没有(或直到最近才)支持GUI所需的事件类型。

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

+1也可以被视为一个“开发平台”,这意味着你可以从Qt提供的库构建你的整个应用程序。没有Qt不是一个框架。除了GUI典型的事件处理之外,没有控制流的反转。QT是一个语言扩展库。我同意@Lothar,假设我用QT“框架”创建Android应用程序。我的应用程序将是
。所以
库,它将包含在模板android项目中。所以我的整个Qt应用程序都适合Android框架,并且在我的应用程序中使用了其他人的代码(Qt库)。那么这是正确的吗?