12
votes

Est-ce que QT classé comme une bibliothèque C ++? Sinon une bibliothèque, comment classeriez-vous QT?

J'ai récemment commencé à regarder dans qt (j'ai installé Qt 4.5.2 et installé son plug-in Eclipse-CDT appelé "qt Integration V1.5.2" et je ferai tout mon développement à Linux-Eclipse-CDT-QTINegration).

À l'origine, je pensais que Qt était une bibliothèque de Vanilla C ++ droite, mais lorsque j'ai installé et commencé à exécuter un exemple de code Qt, j'ai vu beaucoup de choses "étranges" que je considère comme non standard.

Mon objectif est de comprendre à un niveau élevé d'abstraction:

  • est classé qt comme une bibliothèque C ++?
  • sinon une bibliothèque, comment classeriez-vous QT (analogie / métaphores est appréciée)?

0 commentaires

3 Réponses :


4
votes

QT est un ensemble de bibliothèques C ++ avec un préprocesseur et une partie d'un système de construction.


1 commentaires

+1 peut également être considéré comme une "plate-forme de développement", ce qui signifie que vous pouvez construire toute votre application à partir des bibliothèques QT fournit.



32
votes

QT est un cadre, pas une bibliothèque. Ce n'est pas une distinction rigide et rapide appliquée par le langage de programmation, mais décrit plutôt comment le code est conçu et destiné à être utilisé:

une bibliothèque est le code de quelqu'un d'autre qui est utilisé par votre code. L'utilisation d'une bibliothèque signifie que votre application reste telle qu'elle est, elle a simplement une autre bibliothèque pour l'aider.

A CADRED est le code de quelqu'un d'autre que votre code s'adapte. L'utilisation d'un cadre signifie que le cadre définit la structure de votre application.

Si vous utilisez un cadre, vous devez apprendre que les conventions de ce cadre, qui peuvent être un peu différentes de la langue de base; Sinon, vous pouvez passer beaucoup de temps à combattre le cadre et vous manquerez d'une partie de ce que cela a à offrir.

QT en particulier ne ressemble pas à la ligne droite Vanilla C ++ car il n'est pas droit vanille C ++. Il ajoute des extensions (limitées) sur le système d'objet C ++ pour permettre des fonctionnalités telles que des signaux et des machines à sous; Ces extensions sont implémentées à l'aide de la MOC de QT, qui sert de prétraiteur C ++. Pour plus d'informations sur les extensions de QT à C ++:


2 commentaires

Aucun QT n'est pas un cadre. Il n'y a pas d'inversion de flux de contrôle autre que la manipulation des événements typiques de l'interface graphique. Qt est une bibliothèque d'extension de langue.


Je suis d'accord avec @Lothar, disons que je crée une application Android avec QT "Framework". Mon application sera .so bibliothèque et il sera inclus dans le projet Android de modèle. Donc, toute l'application QT s'adapte à Android Framework, et dans mon application utilise quelqu'un d'autre code (bibliothèque QT). C'est donc correct?



3
votes

La plupart des cadres / bibliothèques de l'interface graphique Ajouter à la langue, juste parce que c ++ ne (ou n'a pas jusqu'à récemment) soutenir de manière native le type d'événements dont vous avez besoin pour une interface graphique.

QT choisit de le faire avec des étendues vers la langue et un pré-compilateur, MFC et WXWidgets le font avec C Macros et le pré-processeur C. L'approche QT signifie qu'il peut faire plus (ce n'est pas limité par la macro macro du RPC) au détriment d'un environnement de construction légèrement plus compliqué.


0 commentaires