2009-09-02 16 views
10

poco me puse a buscar en Qt (He instalado Qt 4.5.2 e instalado el plug-in de Eclipse CDT-llamada "integración v1.5.2 qt" y haré todo mi desarrollo en Linux-Eclipse-CDT-QTintegration).¿Está Qt clasificado como una biblioteca de C++? Si no es una biblioteca, ¿cómo clasificaría QT?

Originalmente pensé que Qt era una biblioteca de C++ pura y simple, pero cuando instalé y comencé a ejecutar el código de ejemplo de Qt, vi muchas cosas "extrañas" que considero no estándar.

Mi objetivo es entender a un alto nivel de abstracción:

  • Se Qt clasificada como una biblioteca de C++?
  • Si no es una biblioteca, ¿cómo clasificaría Qt (analogía/metáforas son apreciadas)?

Respuesta

30

Qt es un marco, no una biblioteca. Esto no es una distinción estricta y rápida forzada por el lenguaje de programación, sino que describe cómo el código está diseñado y destinado a ser utilizado:

Un biblioteca es otra persona de código que se utiliza por su código . Usar una biblioteca significa que su aplicación permanece como está, solo tiene otra biblioteca para ayudarlo.

A marco es el código de otra persona que corresponde a su código. Usar un marco significa que el marco define la estructura de su aplicación.

Si está utilizando un marco, es necesario aprender las convenciones de ese marco, que puede ser un poco diferente que el idioma base; de lo contrario, puede pasar mucho tiempo luchando contra el marco, y se perderá algo de lo que tiene que ofrecer.

Qt en particular, no se ve como recta de vainilla C++, ya que no es recta ++ C vainilla. Agrega extensiones (limitadas) al sistema de objetos de C++ para permitir funciones como señales y ranuras; estas extensiones se implementan utilizando el moc de Qt, que actúa como un preprocesador de C++. Para obtener más información sobre las extensiones de Qt para C++:

+0

Ningún QT no es un marco. No hay inversión del flujo de control aparte del manejo de eventos típicos de GUI. QT es una biblioteca que extiende idiomas. – Lothar

+1

¡IoC NO es un requisito para los marcos! – MFH

3

Qt es un conjunto de bibliotecas C++ junto con un preprocesador y parte de un sistema de compilación.

+0

1 también se puede considerar una "plataforma de desarrollo", lo que significa que se puede construir toda la aplicación de las bibliotecas Qt proporciona. – Shaun

2

mayoría de los marcos GUI/bibliotecas se suman a la lengua, sólo porque C++ no lo hace (o no lo hicieron hasta hace muy poco) admite de forma nativa el tipo de eventos que necesita para una GUI.

Qt elige hacer esto con extensiones al idioma y un precompilador, MFC y wxWidgets lo hacen con las macros c y el preprocesador c. El enfoque de Qt significa que puede hacer más (no está limitado por el lenguaje de macros cpp) a expensas de un entorno de compilación un poco más complicado.

Cuestiones relacionadas